Ok, habs noch nicht komplett analysiert.

Aber die erste Zeile die mir auffällt ist die:
LCD_RAM CODE 0Ah
Mein Assembler versteht das garnicht. Gibst du damit nicht der Adresse 0Ah im Programmspeicher den Namen LCD_RAM?
Ich denke das sollte IDATA heißen.

Das zweite ist das du beim initialisieren bereits im 4-Bit Modus sendest. Das darf nicht sein. Zum initilasisieren mußt du das Highnibble so anlegen als wärst du im 8-Bit-Modus und dann Enable pulsen.

Sollte in etwa so aussehen:
Code:
lcd-reset:
	CLR	en
	CLR	rs
	CLR	rw
	
	CLR	db7
	CLR	db6
	SETB	db5
	SETB	db4
	call	wait-long
	
	SETB	en
	CLR	en
	call	wait-long
	
	SETB	en
	CLR	en
	call	wait-long
	
	SETB	en
	CLR	en
	call	wait
	
	CLR	DB4		;hier schon im 8-Bit Modus auf 4-Bit umstellen
	SETB	en
	CLR	en
RET