Gut.
Ich hab mal bisschen was rausgesucht.
Damit sollte die Initialisierung und das Senden schonmal funktionieren.
Ist aber kein vollständiges Programm.

Code:
INCLUDE .......		;dein prozessor

;-------------------------------------------------------------------------------
;variablendeklaration
rs		EQU	px.x
rw		EQU	px.x
en		EQU	px.x
DB4		EQU	px.x
db5		EQU	px.x
db6		EQU	px.x
db7		EQU	px.x
;-------------------------------------------------------------------------------



;-------------------------------------------------------------------------------------
lcd-com:
;sendet einen Befehl im ACC ans LCD
	CLR	rs
	CLR	rw
JMP	lcd-write
;-------------------------------------------------------------------------------------
lcd-out:
;sendet ein Zeichen im ACC ans LCD
	SETB	rs
	CLR	rw
;-------------------------------------------------------------------------------------
lcd-write:
;beeinflusst ACC,Carry und R0-R2
	MOV	R2,#02h	;zwei durchläufe da zwei nibbles
lcd-write1:
	call	wait		;es könnte kurz vorher gesendet worden sein also lieber
				;mal etwas warten bis das lcd bereit ist
	RLC	A		;daten
	MOV	db7,C		;schrittweise
	RLC	A		;in carry schieben
	MOV	db6,C		;und an datenport
	RLC	A		;anlegen
	MOV	db5,C
	RLC	A
	MOV	db4,C
	
	SETB	en		;schreibimpuls
	CLR	en

	DJNZ	R2,lcd-write1	;wiederholen wenn es der erste durchlauf war
RET
;-------------------------------------------------------------------------------------


;-------------------------------------------------------------------------------------
lcd-ini:
	CLR	en
	CLR	rs
	CLR	rw
	
	CLR	db7		;lcd
	CLR	db6		;8-bit
	SETB	db5		;modus
	SETB	db4		;
	call	wait-long	;länger warten
	
	SETB	en		;
	CLR	en		;senden
	call	wait-long	;länger warten
	
	SETB	en		;nochmal
	CLR	en		;senden
	call	wait-long	;länger warten
	
	SETB	en		;nochmal
	CLR	en		;senden
	call	wait		;länger warten
	
	CLR	DB4		;4-bit modus
	SETB	en		;senden
	CLR	en

;-------------------------------------------------------------------------------------
;dispalyfunktionen initialisieren
	MOV	A,#28h	;4bit, 2lines, 5x7
	call	lcd-com
	MOV	A,#01h	;clr
	call	lcd-com
	MOV	A,#02h	;home
	call	lcd-com
	MOV	A,#06h	;inc	no shift
	call	lcd-com
	MOV	A,#0ch	;disp. on ,curs. off ,blink off
	call	lcd-com
RET
;-------------------------------------------------------------------------------------
wait-long:
;evtl die register retten wenn du sie brauchst
	MOV	R0,#00h
	MOV	R1,#00h
wait-long1:
	DJNZ	R0,wait-long1
	DJNZ	R1,wait-long1
RET
;-------------------------------------------------------------------------------------
wait:
;evtl register retten wenn du sie brauchst
	MOV	R0,#00h
wait1:
	DJNZ	R0,wait1
RET
;-------------------------------------------------------------------------------------
Damit solltest du schon weiterkommen.
Ist aus einem funktionstüchtigen Programm. Sollte also klappen.