Составить программу поиска в массиве чисел, расположенном в области памяти 0800-0809, контрольного числа, находящегося в аккумуляторе с последующей выдачей его на дисплей.
Блок схема:
Листинг программы:
адрес |
код |
мнемоника |
Комментарий |
0810 |
26 |
MVI H, 0B |
Определение стека |
0811 |
0B |
||
0812 |
2E |
MVI L, CO |
|
0813 |
C0 |
||
0814 |
F9 |
SPHL |
|
0815 |
06 |
MVI B, 0 |
Обнуление счетчика |
0816 |
00 |
||
0817 |
F5 |
PUSH PSW |
Загрузка стека |
0818 |
F1 |
POP PSW |
Извлечение из стека |
0819 |
26 |
MVI H, 08 |
В Н загружаем адрес |
081A |
08 |
||
081B |
68 |
MOV L, B |
В L загружаем смещение |
081C |
4E |
MOV C, M |
|
081D |
F5 |
PUSH PSW |
Загрузка стека |
081E |
B9 |
CMP C |
Вычитание А –С |
081F |
CA |
JZ 0829 |
Переход на адрес |
0820 |
29 |
||
0821 |
08 |
||
0822 |
04 |
INR B |
Увеличение счетчика |
0823 |
3E |
MVI A, 0A |
Загрузка аккумулятора |
0824 |
0A |
||
0825 |
B8 |
CMP B |
Вычитание А-В |
0826 |
C2 |
JNZ 0819 |
Переход на адрес |
0827 |
19 |
||
0828 |
08 |
||
0829 |
76 |
HLT |
Останов |
082A |
26 |
MVI H, 09 |
В Н семисегментный код |
082B |
09 |
||
082C |
69 |
MOV L, C |
|
082D |
7E |
MOV A, M |
|
082E |
D3 |
OUT F9 |
Зажигание индикатора |
082F |
F9 |
||
0830 |
3E |
MVI A, 01 |
|
0831 |
01 |
||
0832 |
D3 |
OUT F8 |
|
0833 |
F8 |
Задача:
Составить программу мигания децимальной точки во всех разрядах дисплея с секундной частотой (четные разряды должны работать в противофазе с нечетными).
Блок схема:
Листинг программы:
адрес |
код |
мнемоника |
Комментарий |
0800 |
26 |
MVI H, 0B |
Определение стека |
0801 |
0B |
||
0802 |
2E |
MVI L, CO |
|
0803 |
C0 |
||
0804 |
F9 |
SPHL |
|
0805 |
3E |
MVI A <=80 |
В порт F9 записать 80h |
0806 |
80 |
||
0807 |
D3 |
OUT |
|
0808 |
F9 |
||
0809 |
3E |
MVI A <=75 |
В порт F8 записать 75h |
080A |
75 |
||
080B |
D3 |
OUT |
|
080C |
F8 |
||
080D |
CD |
CALL |
Переход на подпрограмму задержки |
080E |
00 |
||
080F |
0A |
||
0810 |
3E |
MVI <=BA |
В порт F8 записать Bah |
0811 |
BA |
||
0812 |
D3 |
OUT |
|
0813 |
F8 |
||
0814 |
CD |
CALL |
Переход на подпрограмму задержки |
0815 |
00 |
||
0816 |
0A |
||
0817 |
C3 |
JMP |
Возврат в начало программы |
0818 |
05 |
||
0819 |
08 |
||
0A00 |
0E |
MVI C, 32h |
Подпрограмма задержки |
0A01 |
32 |
||
0A02 |
79 |
MOV A,C |
|
0A03 |
A1 |
ANA C |
|
0A04 |
CA |
JZ |
Выход из подпрограммы |
0A05 |
0E |
||
0A06 |
0A |
||
0A07 |
CD |
CALL |
Переход на подпрограмму задержки |
0A08 |
A0 |
||
0A09 |
0A |
||
0A0A |
0D |
DCR C |
|
0A0B |
C3 |
JMP |
|
0A0C |
02 |
||
0A0D |
0A |
||
0A0E |
C9 |
RET |
Возврат |
0AA0 |
06 |
MVI B, FF |
Подпрограмма задержки |
0AA1 |
FF |
||
0AA2 |
78 |
MOV A,B |
|
0AA3 |
A0 |
ANA B |
|
0AA4 |
CA |
JZ |
|
0AA5 |
AD |
||
0AA6 |
0A |
||
0AA7 |
05 |
DCR B |
|
0AA8 |
00 |
NOP |
|
0AA9 |
00 |
NOP |
|
0AAA |
C3 |
JMP |
|
0AAB |
0A |
||
0AAC |
A2 |
||
0AAD |
C9 |
RET |
Возврат |
Задание: Составить программу выдачи на дисплей название своей группы.
Блок схема:
Листинг:
адрес |
код |
мнемоника |
комментарий |
0800 |
7F |
7F |
Семисегментный код “B” |
0801 |
78 |
78 |
Семисегментный код “t” |
0802 |
40 |
40 |
Семисегментный код “-“ |
0803 |
66 |
66 |
Семисегментный код “4” |
0804 |
3F |
3F |
Семисегментный код “0” |
0805 |
07 |
07 |
Семисегментный код “7” |
0810 |
01 |
01 |
Номер разряда дисплея |
0811 |
02 |
02 |
Номер разряда дисплея |
0812 |
04 |
04 |
Номер разряда дисплея |
0813 |
08 |
08 |
Номер разряда дисплея |
0814 |
10 |
10 |
Номер разряда дисплея |
0815 |
20 |
20 |
Номер разряда дисплея |
0820 |
01 |
LXI B, data8 |
BC←0800 |
0821 |
00 |
00 |
|
0822 |
08 |
08 |
|
0823 |
11 |
LXI D, data16 |
DE←0810 |
0824 |
10 |
10 |
|
0825 |
08 |
08 |
|
0826 |
26 |
MVI H, data8 |
H←06 |
0827 |
06 |
06 |
|
0828 |
0A |
LDAX B |
A←M(BC) |
0829 |
D3 |
OUT port |
F9←A |
082A |
F9 |
F9 |
|
082B |
1A |
LDAX D |
A←M(DE) |
082C |
D3 |
OUT port |
F8←A |
082D |
F8 |
F8 |
|
082E |
13 |
INX D |
DE=DE+1 |
082F |
03 |
INX B |
BC=BC+1 |
0830 |
25 |
DCR H |
H=H-1 |
0831 |
3E |
MVI A, data8 |
A←00 |
0832 |
00 |
00 |
|
0833 |
D3 |
OUT port |
F8←A |
0834 |
F8 |
F8 |
|
0835 |
C2 |
JNZ addr |
Перейти в 0828 |
0836 |
28 |
28 |
|
0837 |
08 |
08 |
|
0838 |
C3 |
JMP addr |
Перейти в 0820 |
0839 |
20 |
20 |
|
083A |
08 |
08 |
|
083B |
76 |
HLT |
Остановка |
Вывод: В процессе выполнения лабораторной работы Я изучил особенности функционирования микропроцессора при выполнении команд передачи управления, организации условных и безусловных переходов в программах; приобрел навыки модульного программирования.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.