Hello,
If you wish others to review the code you are using, you will need to make the operation of the code much clearer to the reader.
The most glaring omission in your post is the complete lack of comments to explain your intent. As a minimum, I would suggest the basic function of each sub-routine to be identified (as a single phrase), and also include the data it expects to receive, and the data it makes available to the rest of the program (if any). This is particularly important for assembly programs that are not "self documenting". I would also suggest any numeric constants to be identified as to what they represent. For example, if a value is an LCD command byte, say what particular command it represents. The addition of comments will also help you to understand what you did when reading the code at some time in the future.
The other major issue is the confusion caused by lack of indentation, again more important for assembly than C code. If the indentation disappears when you "paste" the text into the post, you will need to add it by hand. Use either the "Insert Source code" button, or select Courier New as the font, to allow clear indentation. Without indentation, as well as making the code difficult to read, you do not give the oportunity for your assembly code to be pasted to a text file and tested, without a lot of additional effort by the reader.
Finally, a minor point - the code is somewhat easier to read if not "bolded".
I realise this doesn't solve your current problem, but if you make your code easy to follow, it is less likely to be put in the "too hard basket".
Regard,
Mac