Инструкции по выполнению работы
Микропроцессор КР580ВМ80А имеет фиксированный набор команд. Каждая команда имеет свой машинный код – слово длиной 8, 16 или 24 бит, занимающее соответственно 1, 2 или 3 ячейки памяти в запоминающем устройстве микроЭВМ. Микропроцессор работает по программе, интерпретируя содержимое ячейки памяти как код команды или как данные.
Задание №1
Исследовать работу программы 2.1
Рассмотрим программу 2.1, извлекающую число из ячейки памяти с адресом 0010h, осуществляющую инверсию этого числа и записывающую результат по адресу 0011h.
Программа 3.1 (в мнемокодах)
Мнемокод Комментарий
LXI H, 0010 загрузить адрес 0010h
MOV A,M передать данные из 0010h в аккумулятор
CMA инвертировать содержимое аккумулятора
INX HL сформировать адрес для результата
MOV M,A записать число из аккумулятора в память
HLT прервать выполнение программы
Для начала работы программы, необходимо в рабочую ячейку 0010 занести любое шестнадцатиричное число от 01 до FF.
При записи программ все числа представляются в шестнадцатеричной системе счисления.
Задание 1: Исследование программы 2.1
1.1 Ввести программу 2.1 в микро – ЭВМ
1.2 Записать исследуемое число по адресу 0010
1.3 Проверить результат выполнения программы по числу записанному в ячейке 0011
1.4 Составьте таблицу 1 содержимого регистров микропроцессора при выполнении программы 3.1 с командой CMA при выполнении программы по шагам.
Таблица 1
Содержимое регистров после выполнения каждой команды программы 3.1 | |||||||
Регистры МП | Шаг программы (команда, после которой анализируется содержимое регистров) | ||||||
0 шаг (начало) | 1шаг LXI H | 2 шаг MOV A,M | 3шаг CMA | 4 шаг INX HL | 5 шаг MOV M,A | 6 шаг HLT | |
A | |||||||
FL | |||||||
H | |||||||
L | |||||||
M1=0010 | |||||||
M2=0011 |
Задание 2: Исследование программы 2.2
2.1Вызвать окно выбора задания и в меню выбрать программу 2.2
2.2 Занести в ячейки 0010 и 0011 сравниваемые числа
2.3 Результат выполнения программы находится в регистре В
2.4 Проконтролировать содержимое ячеек памяти и регистров микропроцессора, участвующих в работе программы
2.5 Графически отобразить выполнение команды lda 0010
Графическое представление команды загрузки аккумулятора
Задание 3: Исследовать работу программы 2.3
3.1 Загрузить программу 2.3 в память
3.2 Записать данные в ячейки памяти 0010 и 0011
3.3 Результирующее число находится в ячейке, адресуемой парой регистров ВС
3.4 Составьте таблицу 2 содержимого регистров микропроцессора при выполнении программы 3.3 с командой ADD M при выполнении программы по шагам.
Таблица 2
№ | Команда | A | FL | HL | М1/данные | М2/данные | М3/данные | ВС | DE |
lxi hl 0010 | |||||||||
lxi bc, 0011 | |||||||||
ldax bc | |||||||||
add m | |||||||||
inx bc | |||||||||
stax bc | |||||||||
hlt |
Задание 4: Исследование программы 2.4
4.1 Записать программу 2.4 в микро – ЭВМ
4.2 Записать исследуемые числа по адресам 0010 и 0011
4.3 Проверить результат выполнения программы по числу, записанному в регистр В
Задание 5: Исследование программы 2.5
5.1 Занести шестнадцать любых однобайтных чисел в ячейки памяти, начиная с 0000
5.2 Убедится в выполнении последовательного сдвига этих чисел проверкой содержимого адресов 0010
Задание 6: Используя программы 2.2; 2.3; 2.5; составить программу пересылки двух операндов двойной длины, хранящихся в ячейках 0010, 0011, 0012, 0013 в регистрах пары BC и DE
Задание 7: Исследовать выполнение программы 2.6
7.1 Преобразуемое число записать по адресу 0010
7.2 Результат инверсии находится в регистре D
При выполнении заданий №№ 6 и 7 требуется воспользоваться программой EDITOR из пакета SHELLКР580,
Служащей для записи и редактирования программ пользователя. После ввода отредактированных программ в эмулятор предстоит её отладка согласно изученной методике, после чего программа станет доступна для исследования.
Приложение №1
Программа №2.1
lxi hi,0010 записать адрес 0010 в паре HL
mov a,m передать данные в аккумулятор
cma инвертировать содержимое аккумулятора
lnx hl инвертировать содержимое HL
mov m,a передать содержимое регистра А в ячейку памяти
hit прервать выполнение программы
Программа №2.2
lda 0010 передать данные из ячейки 0010 в аккумулятор и
mov d,a в регистр D
lhtd 0011 данные из ячейки 0011 передать в регистр HL
sub l вычесть содержимое регистра L из содержимого А
jnc cnt если есть заем, идти на CNT
mov b,l передать содержимое L в регистр В
jmp done перейти на конец программы
cnt:mov b,d передать содержимое D в регистр B
done:hlt остановить выполнение программы
Программа №2.3
lxi hl,0010 записать адрес 0010 в регистр HL
lxi bc,0011 записать адрес 0011 в регистр ВС
ldax bc передать данные из ячейки по адресу ВС в аккумулятор
add m сложить содержимое аккумулятора и ячейки 0010
inx bc увеличить содержимое ВС на 1
stax bc передать содержимое аккумулятора в ячейку ВС
hlt завершить выполнение
Программа №2.4
start:lxi hl,0010 записать адрес 0010 в регистр HL
lxi bc,0011 записать адрес 0011 в регистр ВС
ldax bc передать данные из ячейки ВС в аккумулятор
xra m проверка числа
iz start если 0, то идти на начало
mov b,a записать в регистр В значение аккумулятора
hlt завершить выполнение
Программа №2.5
lxi hl,0000 загрузить адрес в регистр HL
lxi de,0010 загрузить адрес в регистр DE
mvl b,10 записать в регистр число 10
cnt:mov a,m передать данные из ячейки HL в аккумулятор
stax de передать число из аккумулятора в ячейку DE
inx hl инкрементировать HL
inx de инкрементировать DE
dcr b деинкрементировать B
jnz cnt если b≠, идти на CNT
hlt завершить выполнение
Программа №2.6
lxi hl,0010 записать в регистр HL адрес 0010
mov a,m передать данные в аккумулятор из ячейки HL
cma инвертировать число в аккумуляторе
mov d,a передать содержимое аккумулятора в регистр D
hlt останов программы