Dekódování znaků

Ahoj všichni. Jsem docela překvapen, jak se to tady “rozjelo”. Ale jak jsem psal výše, pořešil jsem vše v asm, protože Céčku to prozatím nedávám, ale čeká mě to!!!
Dekódování 5B ID se trochu scvrklo, protože 1B má jen dvě možnosti (87 nebo 43). 2B je vždy 00. Jejich ověření je tudíž na pár řádků. Začne to “houstnout” od 3B. Zde je tabulka největší. LCD je 2 x 8 znaků, aby texty nebyly tak dlouhé.
Co se týká makra pro volání zobrazení na LCD, používám toto:
;-----------------------------------
LCDout MACRO LCDout
MOVLW LCDout
PAGESEL WR_DATA
CALL WR_DATA
ENDM

LCDW MACRO LCDW
PAGESEL WR_CMD
CALL WR_CMD
ENDM
;-----------------------------------
Vlastní volání zobrazení je následující a pro LCD 2 x 8 znaků:
;-----------------------------------
PAGESEL CLS_LINE1
CALL CLS_LINE1

LCDout	'P'
    ...
    ...

RETURN

;-----------------------------------

Myslím si, že je to kratší než použít tohle:

;-----------------------------------

PAGESEL	C_LCD
CALL	C_LCD		; volej podprogram C_LCD - vynuluj LCD

CALL	LINE1		; nastav kurzor na prvni pozici radku 1

MOVLW	'P'		; vloz znak do LCD
CALL	WR_DATA	; volej podprogam WR_DATA, zapis data do LCD
    ...
    ...
RETURN

;-----------------------------------