Сто лет не писал на ассемблере, а на ассемблере ВМ80 никогда. Прошу помощи с пониманием!

Написал маленькую программулину (пишу в эмуляторе на сайте http://rk86.ru/, к реалу доступа нет сейчас). Она делает следующее: в паре BC у нас координаты X и Y, подпрограмма coord рассчитывает адрес в экранной области и печатает туда символ 0. Далее через процедуру из ПЗУ мы опрашиваем клавиатуру и ждем нажатия "пробела", если нажат печатаем еще один символ, и так пока не достигнем конца экрана.

Засада в том, что при нажатии пробела печатается некое количество символов, как будто клавиша залипает. Ни как не могу это победить!


Скрытый текст

Код:
keyb_ask:	        EQU     0F812H	;опрос состояния клавиатуры
keyb_enter:	EQU     0F803H	;ввод символа с клавиатуры код в A
keyb_ask_key:	EQU	   0F81BH	;опрос кода нажатой клавиши код в A
prn_symb: 	EQU     0F809H	;печать символа в C код символа
prn_line:	        EQU     0F818H	;печать строки в HL адрес строки
prn_hex		EQU 	   0F815H	;печать в HEX в A байт
prompt  	        EQU 	   0F86Ch

		org	0
		mvi	b, 0
		mvi	c, 10
start:	call	coord
		mvi	m, '0'
start1:	call	keyb_ask_key
		cpi	20H
		jnz	start1
		mov	a,b
		cpi	64
		jz	prompt
		inr	b
		jmp	start



coord:	push	d	;B это x C это y
		push b
		lxi 	h,77c2h
		lxi	d,004eh
coord1:	dad	d
		dcr	c
		jnz	coord1
		mov 	e,b
		dad	d
		pop	b
		pop 	d
		ret
[свернуть]