ldi r27,high(dysplay_table+8);дисплея в регистр X.
ldY+,r16; загрузка стоимости из памяти
ld Y+,r17
rjmpIntToStr
rjmpdisplay
;считывание данных с клавиатуры
l6: ldir26,low(key_table); загрузка начального адреса
ldi r27,high(key_table);таблицы скан-кодов
lde r17,0
l15: ld r16,X+
cpr16,scancode; расшифровка скан-кода
breql16; если нужный скан-код найден, переход к заполнению данных
inc r17
cpi r17,11
breq l18
rjmp l15
l18: cpi scancode,0xD7;обработка нажатия ввода
brnedisplay
ldir20,0
ldir28,low(dysplay_table +3); загрузка конечного адреса
ldir29,high(dysplay_table +3); символов, отображающих цену
;перевод данных из строкового вида в числовой
l19: ld r16,Y-
ldi r17,0
mov r18,r16
mov r19,r17
lsl r16
rsl r17
lsl r16
rsl r17
lsl r16
rsl r17
lsl r16
rsl r17
add r16,r18
adc r17,r19
add r16,r18
adc r17,r19
ld r18,Y
ldi r19,0
add r16,r18
adc r17,r19
inc r20
cpi r20,3
brnel19
ldir28,low(price); загрузка конечного адреса
ldir29,high(dysplay_table +3); символов, отображающих цену
st Y+,r16
st Y+,r17
jmp display
l16: mov key,r17
mov r17,pointer
cpi r17,0
brne l18
; если заполнение начато заново, обнуляется вся строка
ldir28,low(dysplay_table); загрузка начального адреса символов,
ldi r29,high(dysplay_table);отображающих цену
ldi r16,0
st Y+,r16
st Y+,r16
st Y+,r16
st Y+,r16
ldi r26,low(dysplay_table +7); загрузка адреса конца строки,
ldi r27,high(dysplay_table +7);отображающейцену
ldir28,low(dysplay_table+6); загрузка адреса предпоследнего
ldir29,high(dysplay_table+6);символа строки, отображающей цену
ld r16,Y-
st X-,R16
ld r16,Y-
st X-,R16
ld r16,Y-
st X-,R16
stY,key; запись символа
ldi r16,1
add r17,r16
cpi r17,4
brlo l17
ldi r17,0
l17: mov pointer,r17
;отображение на дисплее
display: ldir26,low(dysplay_table); загрузка начального адреса буфера
ldi r27,high(dysplay_table);дисплея в регистр X.
ldir16,0x00; r16 используется для адресации индикатора
l8: ldr17,X+; r17 используется для временного хранения кода символа
andir16,0x0F
lslr17;формирование байта для отправки на дисплей
lsl r17
lsl r17
lsl r17
add r17,r16
out PORTC,r17
cpi r16,0x01
breq l9
cpi r16,0x05
breq l9
cpi r16,0x0A
breq l9
out PORTD,0x01;гашение запятой
rjmp l10
l9: outPORTD,0x00; отображение запятой
l10: cpi r16,0x0F
brne l8
;подпрограмма преобразования числа в строку
IntToStr: ldi r20,10
ldi r21,0
ITS4: cp r16,r20
cpc r17,r21
brlo ITS1
mov r18,r16
mov r19,r16
ldi r16,0
ldi r17,0
ITS2: cp r18,r20
cpc r19,r21
brlo ITS3
sub r18,r20
sbs r19,r21
inc r16
adc r17,r19
rjmp ITS2
ITS3: ld X+,r16
rjmp ITS4
ITS1: ld X+,r16
reti