Kommt noch die Frage zu LCD DATA/COMMAND oder bezieht sich das auf die Kommentare??? 0.o

Kommentare sind soweit in Ordnung
Code:
LCD_DATA:
 mov          mp2, mp1
 andi          mp1, 0b11110000         ; untere Nibble auf Null gesetzt  << ok
 sbr            mp1, 1<<lcd_rs            ;RS auf H setzen                      << ok
 out            lcd_port, mp1               ;Ausgabe obere Nibble (1111)   << ok
 rcall           lcd_enable

 swap          mp2                           ;vertauschen der 4 höherwertigen Bits mit den 4 niederwertigen bits (entspricht 00001111) <<joar optimaler: vertauschen der des High und Low-Nibble
 andi           mp2, 0b11110000       ;obere Nibble auf Null setzen      << ok
 sbr             mp2, 1<<lcd_rs          ;RS auf L setzen                        << falsch auch hier RS wird zu 1
 out             lcd_port, mp2             ; Ausgabe der unteren Nibble ( entspricht 1111)  << ok

 rcall           lcd_enable
 rcall           delay50us
 ret
geb mal Sachstand wie weit du bist!