jnz zader3 ;дребезг еще не окончен
in portc ; опрос клавиатуры
mov e,a ; сохранение кода в регистре Е
zader4:mvi c,povdr ; загрузка кол-ва повторов при отпускании
zader5:in portc ; опрос клавиатуры
ana a ;ни одна клавиша не нажата?
jnz zader4 ;нет, что-то нажато
dcr c ;ничего не нажато, уменьшение счетчика
jnz zader5 ;дребезг еще не окончен
pop h ;очищение стека
jmp obrab ;дребезг окончен, переход на vixod
zader2:dcx h ;**5 уменьшение на 1 постоянной времени
mvi a,0 ;*7
mov a,h ;**5 проверка на равенство 0
ora l ;**4
jnz zader1 ;**10 нет, постоянная времени не равна 0
;да, постоянная времени равна 0
ret ;*10 возврат из подпрограммы задержки
end
3. Листинг программы
Листинг программы на ассемблере соответствующий разработанному алгоритму приведен ниже (файл sign.asm). Содержимое файлов листинга sign.lst и объектного файла sign.obj полученных с помощью программы asm.exe показаны на страницах 18-20
Кросс-ассемблер 80/85 ### Файл листинга sign.lst
Входной файл > sign.asm
Объектный файл > sign.obj
1 проход
2 проход
1 porta equ 80h
2 portb equ 81h
3 portc equ 82h
4 porcrl equ 83h
5 pov equ 21764
6 povdr equ 254
7 mask136 equ 4ah
8 mask6 equ 40h
9 org 800h
10 0800 31 20 09 lxi sp,920h
11 0803 3E 89 mvi a,89h
12 0805 D3 83 out porcrl
13 0807 1E 00 mvi e,0
14 0809 0E 00 mvi c,0
15 080B 16 00 mvi d,0
16 080D 3E FC mvi a,0fch
17 080F D3 80 out porta
18 0811 D3 81 out portb
19 0813 0E FE ZOD1: mvi c,povdr
20 0815 DB 82 rept1: in portc
21 0817 E6 4A ani mask136
22 0819 CA 13 08 jz ZOD1
23 081C 0D dcr c
24 081D D2 15 08 jnc rept1
25 0820 DB 82 in portc
26 0822 5F mov e,a
27 0823 0E FE reset1: mvi c,povdr
28 0825 DB 82 rept2: in portc
29 0827 A7 ana a
30 0828 C2 23 08 jnz reset1
31 082B 0D dcr c
32 082C C2 25 08 jnz rept2
33 082F 3E 40 obrab: mvi a,40h
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.