LXI |
SP, |
;указатель вершины стека |
||
MVI |
A, |
; младший байт данных для счетчиков |
||
OUT |
;в регистр младшего байта счетчиков |
|||
MVI |
A, |
; старший байт данных для счетчиков |
||
OUT |
;в регистр старшего байта счетчиков |
|||
MVI |
A, |
; младший байт данных для счетчика |
||
OUT |
; в регистр младшего байта счетчика |
|||
MVI |
A, |
; старший байт данных для счетчика |
||
OUT |
в регистр старшего байта счетчика |
|||
MVI |
A,1 |
|||
OUT |
запись в первый разряд дисплея (для индикации ) |
|||
OUT |
запись в пятый разряд дисплея (для индикации ) |
|||
STA |
Запись в ячейку ОЗУ текущего значения |
|||
SUB |
A |
Создание нуля в аккумуляторе |
||
OUT |
запись в третий разряд числа (для индикации скорости ) |
|||
MVI |
A,11 |
|||
OUT |
запись во второй разряд числа (для индикации направления –) |
|||
MVI |
A, |
|||
OUT |
запись в четвертый разряд числа (для индикации направления +) |
|||
STA |
Запись в ячейку ОЗУ предыдущего значения направления |
|||
MVI |
A,0Bh |
|||
SIM |
; разрешение прерываний по входу RST7,5 |
|||
EI |
||||
MAIN |
JMP |
MAIN |
||
L1: |
PUSH |
H |
||
PUSH |
B |
|||
PUSH |
PSW |
|||
IN |
58h |
|||
MOV |
C,A |
; запоминание кода в регистре |
||
MVI |
A, |
; |
||
ANA |
C |
;– код нажатой клавиши |
||
MOV |
C,A |
; запоминание в регистре C кода нажатой клавиши |
||
ANI |
; |
|||
CPI |
8 |
; сравнение старших разрядов кода с числом 8 |
||
JZ |
L2 |
; переход к заданию направления движения |
||
JC |
L5 |
; переход к заданию скорости движения |
||
MOV |
A,C |
– код нажатой клавиши |
||
SUI |
11 |
преобразование значения кода клавиши периода |
||
OUT |
70h |
вывод кода на дисплей |
||
CALL |
TAB |
; подпрограмма чтения таблицы данных |
||
OUT |
30h |
; запись в регистр младшего байта счетчика |
||
INX |
H |
; адрес старшего байта данных |
||
MOV |
A,M |
; пересылка в аккумулятор |
||
OUT |
18h |
; запись в регистр старшего байта счетчика |
||
JMP |
L6 |
; переход на ввод кода клавиши |
||
L2: |
MOV |
A,C |
; – код нажатой клавиши |
|
OUT |
10h |
; запись в триггер знака |
||
LDA |
0803h |
; извлечение кода предыдущего направления |
||
OUT |
71h |
; вывод значения предыдущего направления на дисплее |
||
MOV |
A,C |
; модификация значения текущего направления |
||
CPI |
8h |
|||
JZ |
L3 |
|||
ADI |
6h |
; была нажата клавиша «+» |
||
JMP |
L4 |
|||
L3 |
ADI |
3h |
; была нажата клавиша «–» |
|
L4 |
STA |
0803h |
||
OUT |
73h |
; вывод символа на дисплей |
||
JMP |
L6 |
|||
L5 |
LDA |
0804h |
; извлечение кода предыдущего значения скорости |
|
OUT |
72h |
;вывод значения предыдущего значения скорости на дисплее |
||
MOV |
A,C |
; запись нового значения скорости |
||
STA |
0804h |
|||
OUT |
74h |
вывод символа на дисплей |
||
CALL |
TAB |
; подпрограмма чтения таблицы данных |
||
OUT |
50h |
; запись в регистр младшего байта счетчика |
||
INX |
H |
|||
MOV |
A,M |
; |
||
OUT |
38h |
; запись в регистр старшего байта счетчика |
||
JMP |
L6 |
|||
TAB |
LXI |
H, |
; |
|
MOV |
A,C |
; – код нажатой клавиши |
||
ADD |
A |
; |
||
MOV |
C,A |
; формирование в числа, равного |
||
MVI |
B,0 |
; удвоенному коду клавиши |
||
DAD |
B |
; – адрес памяти |
||
MOV |
A,M |
; – младший байт данных |
||
MVI |
A, 10h |
|||
SIM |
||||
RET |
||||
L6: |
POP |
PSW |
||
POP |
B |
|||
POP |
H |
|||
EI |
; разрешение всех прерываний (после следующей команды) |
|||
RET |
; возврат из подпрограммы обработки прерываний |
|||
END |
||||
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.