- •Отчет по лабораторной работе
- •3. Система команд микропроцессора к580
- •4. Программа работы
- •5. Вводные программы
- •5.1. Программа 1
- •5.2. Программа 2
- •5.3. Программа 3
- •5.4. Программа 4
- •5.5. Программа 5
- •5.6. Программа 6
- •5.7. Программа 7
- •5.8. Программа 8
- •5.9. Программа 9
- •5.10. Программа 10
- •5.11. Программа 11
- •6. Самостоятельная программа 1
- •7. Самостоятельная программа 2
- •8. Заключение
5.4. Программа 4
Программа позволяет сложить содержимое регистра с содержимым ячейки памяти.
Складывается содержимое аккумулятора А с числом 100, записанным по адресу H=000 L=200.
Текст программы представлен в Таблице 4.
Таблица 4
Адреса |
Команды |
Мнемоника |
Комментарии команд |
L=000 |
041 |
LXI H |
; Загрузка начального адреса в указатель памяти |
001 |
200 |
В2 |
; мл. байт адреса |
002 |
000 |
В3 |
; ст. байт адреса |
003 |
076 |
MVI A |
; Непосредственная загрузка A одним из слагаемых. |
004 |
010 |
В2 |
; Байт данных слагаемого |
005 |
206 |
ADD M |
; Сложение содержимого A c содержимым ячейки памяти |
06 |
167 |
MOV M,A |
; Запоминание значения суммы в ячейке памяти |
007 |
166 |
HLT |
; Останов |
До выполнения программы по адресу 000 200 было записано число 020, в результате выполнения программы содержимое этой ячейки памяти увеличилось на 010 и стало равным 030. Если выполнить ту же программу, но использовать вместо команды ADD M (код 206) команду ADC M (код 216), результат никак не изменится.
В Таблице 5 представлены результаты выполнения программы в автоматическом режиме.
Таблица 5
шаг |
содержимое ячейки памяти с адресом 000 200 |
0 |
020 |
1 |
030 |
3 |
040 |
4 |
050 |
5 |
060 |
6 |
070 |
7 |
100 |
8 |
110 |
Программа вычитания двух чисел:
lxi H, 000, 200
mvi D, 010
mvi A, 100
sub D
movM,A
Результат: по адресу 000 200 записана разница чисел 100 и 010 = 060
Программа сложения двоично-десятичных чисел:
lxi H, 000, 200
mvi A, 045
mvi B, 066
add B
daa
mov M, A
Результат: по адресу 000 200 записана сумма десятичных чисел 25 и 36 = 61
Программа вычитания двоично-десятичных чисел:
lxi H, 000, 200
mvi A, 99
mvi B, 50
sub B
inc A
mov M, A
mvi A, 75
add M
daa
mov M, A
Результат: по адресу 000 200 записан результат вычитания десятичных чисел 75 и 50 = 25
5.5. Программа 5
Программа использует логическую операцию, операции сдвига и запоминания Слова Состояния Программы.
Перед выполнением программы по адресам от Н=000 L=011 до H=000 L=040 могут содержаться ненулевые данные, поскольку туда производилась запись данных и команд предыдущими программами.
Текст программы представлен в Таблице 6.
Таблица 6
Адреса |
Команды |
Мнемоника |
Комментарии команд |
L=000 |
006 |
MVI B |
; Непосредственная загрузка |
001 |
200 |
В2 |
; данных в РгВ |
002 |
076 |
MVI A |
; Непосредственная загрузка |
003 |
001 |
B2 |
; данных в A |
004 |
250 |
XRA B |
; Cложение по mod 2 содержимого A c Рг B |
005 |
027 |
RAL |
; Циклический сдвиг влево через перенос |
006 |
061 |
LXI SP |
; Инициализация указателя стека |
007 |
202 |
В2 |
; Мл.байт адреса |
010 |
000 |
В3 |
; Ст.байт адреса |
011 |
365 |
PUSH PSW |
; Запоминание в стеке Слова Состояния Программы |
012 |
166 |
HLT |
; Останов |
Анализ аккумулятора и флагов состояния в ходе выполнения команд представлен в Таблице 7.
Таблица 7
команда |
А |
F |
mvi B, data |
xxxxxxxx |
xx0x0x1x |
mvi A, data |
00000001 |
xx0x0x1x |
xra B |
10000001 |
10000110 |
ral |
00000010 |
10000111 |
lxi SP |
00000010 |
10000111 |
push PSW |
00000010 |
10000111 |
HLT |
00000010 |
10000111 |
Результат: по адресу 000 200 записано число 207 = 10000111 – это значение флагов, по адресу 000 201 записано число 002 = 00000010 – это значение аккумулятора. Т.о. в стек было записано слово состояния.