mvi a,0ech
out porta
mvi a,7eh ;закрываем ворота между камерами
out portb
call zader
mvi a,0eeh ;поднимаем уровень воды
out portb
call zader
mvi a,8eh
out portb
call zader
mvi a,8ch ;выходит корабль
out portb
call zader
mvi a,0ECh
out porta
out portb
call zader
lxi h,flag
mvi m,11h
outP: jmp circl
***************Задержка*********************************************
zader: mvi d,1
time2: dcr d
lxi h,pov ;3.1
zader1: dcx h ;3.2
mov a,h ;3.3
ora l ;3.4
jnz zader1 ;3.5
mov a,d ;3.3
ora l ;3.4
jnz time2 ;3.5
ret ;3.6
****************Переменые*******************************************
flag: db 0h ;текущее состояние системы
klav: db 0h ;код нажатой клавиши
end
4.Расчёт временной задержки.
Составим уравнение: Од + Мн * PSVR = 2220000,
где Од - суммарное количество тактов команд, выполняющихся однократно
при формировании временной задержки;
Мн - суммарное количество тактов команд, выполняющихся в цикле
PSVR - количество повторений цикла;
2220000 - количество тактов в 1 секунде (для тактовой частоты 2.22МГц).
Од = 17+7+(5+10)*10+(4+5+1)*10+10=284 тактов
Мн = 10+5+5+4=24 тактов
Для расчёта количества повторений цикла равному 1 секунде, необходимо количество тактов разделить на 10.
PSVR = ((2220000-Од)/Мн = (2220000/10)-374)/24 = 9238 раз
В качестве PSVR берется целое число проходов 9238.
Машинный код.
Кросс-ассемблер 80/85 *** Объектный файл my_3.obj
Входной файл > my_3.asm
Файл листинга > my_3.lst
0800 3E 89 D3 83 31 00 09 06 00 1E 00 16 01 3E EC D3
0810 80 D3 81 0E 64 DB 82 E6 09 CA 13 08 0D C2 15 08
0820 DB 82 21 82 09 77 0E 64 DB 82 A7 C2 26 08 0D C2
0830 28 08 21 82 09 7E FE 01 CA 03 09 21 81 09 7E FE
0840 00 C2 50 08 3E 8C D3 81 21 81 09 36 01 C3 13 08
0850 FE 01 C2 61 08 3E 8E D3 81 21 81 09 36 02 C3 13
0860 08 FE 02 C2 72 08 3E EE D3 81 21 81 09 36 03 C3
0870 13 08 FE 03 C2 83 08 3E 7E D3 81 21 81 09 36 04
0880 C3 13 08 FE 04 C2 98 08 3E 8C D3 80 3E 72 D3 81
0890 21 81 09 36 05 C3 13 08 FE 05 C2 AD 08 3E 70 D3
08A0 81 3E 8E D3 80 21 81 09 36 06 C3 13 08 FE 06 C2
08B0 C2 08 3E EE D3 80 3E 7C D3 81 21 81 09 36 07 C3
08C0 13 08 FE 07 C2 D3 08 3E 7E D3 80 21 81 09 36 08
08D0 C3 13 08 FE 08 C2 E4 08 3E 72 D3 80 21 81 09 36
08E0 09 C3 13 08 FE 09 C2 F5 08 3E 70 D3 80 21 81 09
08F0 36 10 C3 13 08 3E 7C D3 80 D3 81 21 81 09 36 11
0900 C3 13 08 21 81 09 7E FE 11 C2 6C 09 3E 70 D3 80
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.