Вот пока пример программы для считывания скан кодов.
Написано на fasmg. За качество не ругайте.
Код:
include "8085.inc"
;----Програма чтения ps/2 клавиатуры с--------------------------
;---использованием ВВ51 и обработчиком---------------------
;---прерываний------------------------------------------------------------------

init:	di
	lxi	sp,ramtop
	call	initlcd
	call	initusart
	ei
main:	hlt
	jp	main
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
hextab:	db	'0123456789ABCDEF'
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
;----процедура обработки прерываний-------------------------------------------------
int:	di
	push	psw
	push	d
	push	h	
	in	dusart
	call	hexout
	mvi	a,068h
	out	dlcd
	call	delay
	mvi	a,20h
	out	dlcd
	call	delay
	pop	h
	pop	d
	pop	psw
	ei
	ret

;---Установка ВВ51 в исходное состояние---------------------------------
initusart:	xra	a
	out	cusart
	out	cusart
	out	cusart
	mvi	a,ir	;Сброс
	out	cusart
	mvi	a,ps2	;Установка режима работы порта
	out	cusart
	mvi	a,rxe
	out	cusart	;Запись команды
	call	delay
	in	dusart
	call	hexout
	call	delay
	ret
;-Установка LCD2004b в исходное состояние------------------------
initlcd:	mvi	a,0ffh
	call	delaya	;ожидание
	mvi	a,0ffh
	call	delaya	;ожидание
	mvi	a,lcdinit	;
	out	clcd
	call	delay
	mvi	a,lcdinit	;
	out	clcd	;инициализация
	call	delay
;-------------------------------------------------------------------------------------------------
	mvi	a,lcd8bit	;
	out	clcd	;режим 8бит
	call	delay
;--------------------------------------------------------------------------------------------------
	mvi	a,lcdon	;
	out	clcd	;включение
	call	delay
;---------------------------------------------------------------------------------------------------
	mvi	a,lcdcls	;
	out	clcd	;очистка
	mvi	a,d5ms
	call	delaya
;----------------------------------------------------------------------------------------------------
	mvi	a,06h	;
	out	clcd	;режим
	call	delay
;----------------------------------------------------------------------------------------------------
	mvi	a,070h	; p
	out	dlcd
	call	delay

	mvi	a,073h	; s
	out	dlcd
	call	delay

	mvi	a,02Fh	; /
	out	dlcd
	call	delay

	mvi	a,032h	; 2
	out	dlcd
	call	delay

	mvi	a,020h	; 
	out	dlcd
	call	delay
	ret
;----печать HEX байта из аккумулятора--------------------------------------------------------
hexout:	push	psw	; сохраняем аккумулятор
	rrc		; сдвиг на 4 разряда
	rrc
	rrc
	rrc
	call	lhout	; выводим старшие разряды
	pop	psw	; восстанавливаем значение
	call	lhout	; выводим младшие разряды
	ret
lhout:	lxi	d,hextab	; загружаем адрес таблицы
	ani	0Fh	; оставляем младший полубайт
	mov	l,a	; загружаем в L
	dad	d	; получаем адрес символа в HL
	mov	a,m	; загружаем символ из таблицы
	out	dlcd	; выводим символ
	call	delay
	ret
;-----------задержка 100us-------------------------------------------------------------------------------
delay:	mvi	a,0Fh
delay1:	dcr	a
	nop
	nop
	jnz	delay1
	ret
;-----------задержка а*100us----------------------------------------------------------------------------
delaya:	mov	c,a	;в а содержится время задержки
	call	delay
	mov	a,c
	dcr	a
	jnz	delaya
	ret
;------------------Константы и указатели--------------------------------------------------------
ramtop=	87FFh	; 
d5ms=	030h	;задержка 5ms
;---Адреса регистров УСАПП----------------------------------------------------------------------
dusart=	00h	; регистр данных
cusart=	01h	; регистр команд
;---Режимы УСАПП--------------------------------------------------------------------------------------
v9600=	04Eh	;1/16_8_no_1
v2400=	04Fh	;1/64_8_no_1
ps2=	05Dh	;1/1_8_odd_1
;---Команды УСАПП------------------------------------------------------------------------------------
txen=	01h	; Передатчик включен
dtr=	02h	; Устройство готово
rxe=	04h	; Приемник включен
sbrk=	08h	; Прерывание передачи
er=	10h	; Сброс ошибок приема
rts=	20h	; Передача разрешена
ir=	40h	; Программный сброс
eh=	80h	; Режим Hunt
;---Регистр состояния УСАПП-----------------------------------------------------------------------
txrdy=	01h	; Передатчик готов
rxrdy=	02h	; Приемник готов
txe=	04h	; Передача закончена
pe=	08h	; Ошибка четности
oe=	10h	; Ошибка переполнения
fe=	20h	; Ошибка формата
syndet=	40h	; Синхросимвол найден
dsr=	80h	; Передатчик терминала готов
;------Адреса регистров LCD----------------------------------------------------------------------------
clcd=	80h	;регистр команд
dlcd=	81h	;регистр данных
;------Команды LCD----------------------------------------------------------------------------------------
lcdon=	0Ch
lcdoff=	08h
lcdcls=	01h
lcd8bit=	038h
lcdhome=	02h
lcdinit=	030h