2 Укажите, где размещаются операнды и куда пересылается результат операции при выполнении арифметических операций над восьмиразрядными данными?
3 Укажите, где размещаются операнды и куда пересылается результат операции при выполнении сложения 16-разрядных чисел?
4 Укажите выполняемую операцию, машинный код и способ адресации, которые используются в нижеуказанных командах:
а) ADD B; |
б) ADC M; |
в) SUB C; |
г) SBB M; |
д) ADI F0 h; |
е) SUI 3B h; |
ж) DAD B; |
з) DAD D. |
Приборы, оборудование и документация
1Персональный компьютер (ПК).
2Программный пакет «Sim8085 Microprocessor Simulator».
3Методические указания к лабораторной работе.
4Система команд МП Intel 8085A.
Порядок выполнения работы
1 Проверка подготовки учащихся к занятию по вопросам для самоконтроля в виде фронтального или программированного опроса и инструктаж по технике безопасности.
2 Произвести внешний осмотр ПК и убедиться визуально в отсутствии каких-либо повреждений и дефектов.
3 Включить ПК и запустить программу Sim8085.
4 Выполнить индивидуальные задания № 14.1...14.3. Для этого следует выполнить ввод, отладку и выполнение составленных программ аналогично пунктам 4.1…4.3 методических указаний к лабораторной работе № 13. Методические указания и исходные данные к индивидуальным заданиям № 14.1…14.3 приведены в методических указаниях к данной лабораторной работе.
5 После проверки преподавателем результатов выполнения индивидуальных заданий № 14.1…14.3 свернуть окно отладчика симулятора, закрыть программу Sim8085 и завершить работу ПК.
6Ответить на контрольные вопросы.
7Оформить отчет и сдать зачет.
Содержание отчета
1 Наименование и цель лабораторной работы.
2 Условия в виде текста и таблиц, алгоритмы и листинги программ к индивидуальным заданиям № 14.1…14.3 в виде таблиц.
21
3 Результаты выполнения индивидуальных заданий № 14.1…14.3 в виде таблиц и выводы о содержимом регистров, ячеек памяти и значениях признаков.
4 Ручной расчет ожидаемого результата.
5 Ответить на контрольные вопросы.
Контрольные вопросы
1 Поясните разницу между командами ADD E и ADC E.
2 Поясните разницу между командами ADI 50 h и ACI 50 h.
3 Укажите, за сколько циклов и тактов выполняется команда SBB M и поясните, какие действия выполняет МП в каждом цикле?
4 Укажите, за сколько циклов и тактов выполняется команда ACI 0F h и поясните, какие действия выполняет МП в каждом цикле?
Требования к знаниям и умениям учащихся
В результате выполнения лабораторной работы учащиеся должны
знать:
–систему команд МП Intel 8085A (K1821BM85A);
–особенности арифметических команд;
Должны уметь:
–составлять программы для простых восьмиразрядных МП на языке Ассемблер, содержащие арифметические команды;
–выполнять ввод, отладку и выполнение программ на симуляторе МП
Sim8085 Microprocessor Simulator.
Методические указания
1 Теоретическое обоснование
В микропроцессоре Intel 8085A предусмотрены следующие команды двоичной арифметики:
1)сложение восьмиразрядных чисел;
2)сложение 16-разрядных чисел;
3)вычитание восьмиразрядных чисел;
4)инкремент;
5)декремент.
Все арифметические операции с восьмиразрядными операндами предполагают, что один из операндов размещается в регистре-аккумуляторе, а другой – либо в регистре, либо в памяти (при этом адрес ячейки задается в
22
регистровой паре HL), либо является непосредственным числом, заданным в самой команде. Вычитание производится всегда из регистра-аккумулятора. Результат арифметической операции пересылается в регистр-аккумулятор. Кроме того по результату арифметических операций сложения и вычитания устанавливаются биты признаков: S – знака, Z – нуля, A – вспомогательного переноса, P – четности, С – переноса.
Команды сложения 16-разрядных чисел, так называемые команды двойного сложения, предусматривают, что один из операндов находится в регистровой паре HL, а второй – либо в DE, либо в BC. Результат записывается в HL. Кроме того по результату операции устанавливается либо сбрасывается бит переноса – C.
Команды инкремента увеличивают содержимое регистров, ячейки памяти по адресу в HL и регистровых пар на 1. Команда инкремент регистра и памяти изменяет биты признаков: Z, S, A, P, C. Инкремент регистровой пары не затрагивает биты признаков.
Команды декремента уменьшают содержимое регистров, ячейки памяти по адресу в HL и регистровых пар на 1. Затрагиваемые биты признаков аналогичны команде инкремента.
2 Индивидуальное задание № 14. 1
Составить алгоритм, |
написать на языке Ассемблер для МП |
Intel 8085A с адреса 2000 h |
и выполнить линейную программу, реализующую |
последовательность арифметических операций в соответствии с заданным вариантом (таблица 14.1):
M2 = (M1) + (E) – (A) + 1
До выполнения программы вычислить и записать в отчет ожидаемый результат (см. пример в методических указаниях к лабораторной работе №12).
При загрузке исходных данных в ячейку памяти М1 (в команде указывать М) по адресу 2022 h рекомендуется использовать косвенную адресацию, а при загрузке результата в ячейку памяти М2 по адресу 2024 h – прямую адресацию. Программу записать в таблицу, аналогичную по форме таблице 12.4.
23
Таблица 14.1 – Исходные данные к индивидуальному заданию № 14.1
Номер |
Исходные данные |
|
Номер |
Исходные данные |
|
||||
варианта |
(M1) |
(E) |
|
(A) |
варианта |
(M1) |
(E) |
|
(A) |
1 |
1A |
B5 |
|
08 |
8 |
A1 |
4C |
|
17 |
2 |
2A |
B4 |
|
1A |
9 |
B2 |
5E |
|
23 |
3 |
3B |
E1 |
|
2B |
10 |
C4 |
2F |
|
3E |
4 |
0A |
F7 |
|
4C |
11 |
BF |
4D |
|
7D |
5 |
3C |
B4 |
|
53 |
12 |
BE |
3A |
|
5B |
6 |
4D |
FE |
|
61 |
13 |
DC |
4B |
|
6A |
7 |
3A |
D5 |
|
7A |
14 |
A7 |
8F |
|
4B |
Примечания
1 «M1» - ячейка памяти по адресу 2022 h. 2 «M2» - ячейка памяти по адресу 2024 h.
Результаты выполнения программы записать в таблицу 14.2. Сравнить полученный результат с ожидаемым и сделать выводы о содержимом регистров, адресных ячеек памяти и значениях признаков.
Таблица 14.2 – Результаты выполнения индивидуального задания № 14.1
Номер |
Результат |
|
|
Содержимое регистров |
|
Значения |
||||||||||
(Р = 16) |
|
|
|
(P = 16) |
|
признаков |
||||||||||
варианта |
|
|
|
|
||||||||||||
(М2) |
(A) |
(B) |
(C) |
(D) |
(E) |
(H) |
(L) |
(SP) |
(PC) |
S |
Z |
A |
P |
C |
||
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 Индивидуальное задание № 14. 2
Составить алгоритм, написать на языке Ассемблер для МП Intel 8085A с адреса 2000 h и выполнить линейную программу заполнения массива памяти 2020 h …2024 h данными соответственно 0A h…0E h, используя команды загрузки и инкремента регистра и пары регистров (MVI r, b2; LXI rp, b3, b2; INR r; INX rp), f также пересылки (MOV M, r). Программу записать в таблицу, аналогичную по форме таблице 12.4.
Результаты выполнения записать в таблицу 14.3 и сделать выводы.
Таблица 14.3 – Результаты выполнения индивидуального задания № 14.2
Результат – содержимое ЯП по |
|
|
Содержимое регистров |
|
|
Значения |
||||||||||||
адресу 2020 h…2024 h |
|
|
|
|
||||||||||||||
|
|
|
(P = 16) |
|
|
признаков |
||||||||||||
|
(P = 16) |
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(M1) |
(M2) |
(M3) |
(M4) |
(M5) |
(A) |
(B) |
(C) |
(D) |
(E) |
(H) |
(L) |
(SP) |
(PC) |
S |
Z |
A |
P |
C |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24
4 Индивидуальное задание № 14. 3
Составить алгоритм, написать на языке Ассемблер для МП Intel 8085A с адреса 2000 h и выполнить циклическую программу суммирования пяти чисел, находящихся в памяти в соответствии с индивидуальным заданием № 2. Счетчик циклов организовать на регистре B. Результат суммирования загрузить в регистр D. Программу записать в таблицу, аналогичную по форме таблице 12.4.
До выполнения программы вычислить и записать в отчет ожидаемый результат суммирования (см. пример в методических указаниях к лабораторной работе № 12).
Результаты выполнения записать в таблицу 14.4 и сделать выводы.
Таблица 14.4 – Результаты выполнения индивидуального задания № 14.3
Результат |
Содержимое ЯП по адресу |
Содержимое регистров |
|
Значения |
|||||||||||
|
2020 h…2024 h |
|
|||||||||||||
(P = 16) |
|
|
(P = 16) |
|
признаков |
||||||||||
|
(P = 16) |
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(D) |
(M1) |
(M2) |
(M3) |
(M4) |
(M5) |
(A) |
(B) |
(H) |
(L) |
(PC) |
S |
Z |
A |
P |
C |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ЛАБОРАТОРНАЯ РАБОТА № 15
ЛОГИЧЕСКИЕ КОМАНДЫ И КОМАНДЫ СДВИГА Цель работы
1 Изучить приемы составления программ на языке Ассемблер для МП Intel 8085A (K1821BM85A), содержащих логические команды и команды сдвига.
2 Приобрести практические навыки ввода, отладки и выполнения программ на языке Ассемблер, содержащих логические команды, на симуляторе МП Sim8085 Microprocessor Simulator.
Подготовка к выполнению работы
1 Повторить по [1] логические команды и команды сдвига.
2 Изучить методические указания к данной лабораторной работе и составить программы для заданий № 15.1…15.3. Подготовить заготовку отчета (см. содержание отчета).
3 Подготовить ответы на вопросы для самоконтроля.
25
Вопросы для самоконтроля
1 Укажите, какие логические операции может выполнить МП Intel 8085A?
2 Укажите, где размещаются операнды и куда пересылается результат операции при выполнении команд логического сложения, логического умножения, сложения по модулю два и инверсии?
3 Укажите выполняемую операцию, формат, число машинных циклов и поясните, какие действия выполняет МП в каждом цикле для нижеуказанных
команд: |
|
|
|
|
а) ANA C; |
б) ORA D; |
в) ANI 30 h; г) XRI 30 h. |
4 |
Укажите типы команд сравнения и поясните, как они выполняются. |
||
5 |
Укажите типы команд сдвига. |
|
|
6 |
Поясните разницу между командами RRC и RAR. |
||
Приборы, оборудование и документация
5Персональный компьютер (ПК).
6Программный пакет «Sim8085 Microprocessor Simulator».
7Методические указания к лабораторной работе.
8Система команд МП Intel 8085A.
Порядок выполнения работы
1 Проверка подготовки учащихся к занятию по вопросам для самоконтроля в виде фронтального или программированного опроса и инструктаж по технике безопасности.
2 Произвести внешний осмотр ПК и убедиться визуально в отсутствии каких-либо повреждений и дефектов.
3 Включить ПК и запустить программу Sim8085.
4 Выполнить индивидуальные задания № 15.1...15.3. Для этого следует выполнить ввод, отладку и выполнение составленных программ аналогично пунктам 4.1…4.3 методических указаний к лабораторной работе № 13. Методические указания и исходные данные к индивидуальным заданиям № 15.1…15.3 приведены в методических указаниях к данной лабораторной работе.
5 После проверки преподавателем результатов выполнения индивидуальных заданий № 15.1…15.3 свернуть окно отладчика симулятора, закрыть программу Sim8085 и завершить работу ПК.
6Ответить на контрольные вопросы.
7Оформить отчет и сдать зачет.
26
Содержание отчета
1 Наименование и цель лабораторной работы.
2 Условия в виде текста и таблиц, алгоритмы и листинги программ к индивидуальным заданиям № 15.1…15.3 в виде таблиц.
3 Результаты выполнения индивидуальных заданий № 15.1…15.3 в виде таблиц и выводы о содержимом регистров, ячеек памяти и значениях признаков.
Контрольные вопросы
1 Поясните, как с помощью команды сдвига умножить либо разделить некоторое число на 8?
2 Укажите, с помощью какой логической команды и как можно выделить некоторые разряды числа?
3 Укажите, когда устанавливаются признаки Z, C, P, S при выполнении команды сравнения?
4 Поясните, с помощью какой команды можно получить инверсию содержимого регистра D.
Требования к знаниям и умениям учащихся
В результате выполнения лабораторной работы учащиеся должны
знать:
систему команд МП Intel 8085A (K1821BM85A);
особенности логических команд и команд сдвига.
Должны уметь:
составлять программы для простых восьмиразрядных МП на языке Ассемблер, содержащие логические команды и команды сдвига;
выполнять ввод, отладку и выполнение программ на симуляторе МП
Sim8085 Microprocessor Simulator.
Методические указания
Теоретическое обоснование
1.1Логические команды
Для реализации логических операций в системе команд микропроцессора Intel 8085A предусмотрены следующие логические команды:
27
1)логическое сложение;
2)логическое умножение;
3)исключающее ИЛИ;
4)инверсия.
Все логические команды выполняются побитно с восьмиразрядными операндами. При этом один из операндов размещается в регистреаккумуляторе, а второй – либо в одном из регистров общего назначения, либо в ячейке памяти, или задается во втором байте команды. Результат выполнения команды записывается в регистр-аккумулятор. При этом бит переноса устанавливается в нуль, а остальные биты устанавливаются в соответствии с результатом выполнения команды.
Команды логического сложения реализуют логическую операцию ИЛИ. Результат равен 1, если хотя бы один из соответствующих битов равен единице, и равен 0, если оба равны нулю. Например:
1 0 1 0 1 0 0 1
0 0 1 1 0 0 1 0
1 0 1 1 1 0 1 1,
где « » - обозначение логической операции ИЛИ.
Команды логического умножения реализуют логическую операцию И. Результат равен 1, если оба соответствующие бита равны 1, и равен 0, если один из них равен 0. Например:
1 0 1 0 1 0 0 1
0 1 1 0 0 1 0 0
0 0 1 0 0 0 0 0,
где « » - обозначение логической операции И.
Команды исключающего ИЛИ реализуют логическую операцию ИСКЛЮЧАЮЩЕЕ ИЛИ или называемую по другому СЛОЖЕНИЕ ПО МОДУЛЮ ДВА. Результат равен 1, если соответствующие биты противоположны (1 и 0), и равен 0, если они одинаковы (1 и 1; 0 и 0). Например:
1 0 1 0 1 0 0 1
0 0 1 1 0 0 1 0
1 0 0 1 1 0 1 1,
где « » - обозначение логической операции ИСКЛЮЧАЮЩЕЕ ИЛИ. Команды инверсии реализуют операцию ОТРИЦАНИЕ содержимого
только регистра0аккумулятора. Например:
(А) = 1 0 1 0 1 0 0 1
(A̅) = 0 1 0 1 0 1 1 0.
28
1.2Команды сравнения
Система команд микропроцессора Intel 8085A содержит три этапа команд сравнения:
сравнение содержимого аккумулятора с содержимым регистра: А, В, С,
D, E, H или L;
сравнение содержимого аккумулятора с ячейкой памяти по адресу в
HL;
сравнение содержимого аккумулятора с непосредственным операндом. Команды сравнения выполняются посредством внутреннего вычитания
из содержимого аккумулятора А, соответственно, содержимого регистра, ячейки памяти либо непосредственно операнда. Содержимое аккумулятора при этом не изменяется. В результате сравнения устанавливаются биты признаков следующим образом (таблица 15.1):
Таблица 15.1 – Значение битов признаков в зависимости от результата сравнения
Результат сравнения |
|
Признак |
|
Z |
|
C |
|
|
|
||
Равно |
1 |
|
0 |
Больше |
0 |
|
0 |
Меньше |
0 |
|
1 |
Бит четности P устанавливается по результату внутреннего вычитания и, соответственно, равен 1, если количество единиц в результате четно, и равен 0, если количество нечетно.
Бит знака S устанавливается равным значению старшего разряда результата вычитания.
1.3Команды сдвига
Всистеме команд микропроцессора Intel 8085A предусмотрены следующие команды сдвига:
1)циклический сдвиг влево;
2)циклический сдвиг вправо;
3)сдвиг влево через перенос;
4)сдвиг вправо через перенос.
Команды сдвига выполняются в регистре-аккумуляторе A над восьмиразрядными операндами. Результат посылается в регистраккумулятор.
Команда циклического сдвига влево перемещает каждый бит байта на один разряд влево. При этом содержимое старшего разряда пересылается в
29
бит переноса. Используя эту команду можно, реализовать операцию умножения на число, кратное 2.
Команда сдвига вправо через перенос перемещает содержимое каждого бита байта влево на один разряд. При этом содержимое бита переноса записывается в младший разряд, а содержимое старшего разряда пересылается в бит переноса. Используя эту команду, можно реализовать операцию умножения на число, кратное 2.
Команда сдвига вправо через перенос перемещает содержимое каждого разряда байта вправо на один разряд. При этом в старший разряд байта записывается значение бита переноса, а в него заносится содержимое младшего разряда байта. Используя эту команду, модно реализовать операцию деления на число, кратное 2.
2 Индивидуальное задание № 15. 1
Составить алгоритм, написать на языке Ассемблер для МП Intel 8085A с адреса 2000 h и выполнить линейную программу, реализующую последовательность логических операций M2 = (C) (̅) (A) (M1) в соответствии с заданным вариантом (таблица 15.2).
Таблица 15.2 – Исходные данные к индивидуальному заданию № 15.1
Номер |
|
Исходные данные (P = 16) |
Номер |
Исходные данные (P = 16) |
||||||
варианта |
|
(C) |
(D) |
(A) |
(M1) |
варианта |
(C) |
(D) |
(A) |
(M1) |
1 |
|
1A |
B5 |
08 |
35 |
8 |
A1 |
4C |
17 |
2A |
2 |
|
2A |
B4 |
1A |
3E |
9 |
B2 |
5E |
23 |
B4 |
3 |
|
3B |
E1 |
2B |
4D |
10 |
C4 |
2F |
3E |
1A |
4 |
|
35 |
0A |
F7 |
4C |
11 |
BF |
4D |
7D |
A1 |
5 |
|
4D |
41 |
B4 |
53 |
12 |
BE |
3A |
5B |
3E |
6 |
|
05 |
4D |
FE |
61 |
13 |
DC |
4B |
6A |
3B |
7 |
|
4C |
3A |
D5 |
7A |
14 |
A7 |
8F |
4B |
E1 |
Примечания |
|
|
|
|
|
|
|
|
|
|
1 «M1» - ячейка памяти по адресу 2023 h. 2 «M2» - ячейка памяти по адресу 2025 h.
Выделить младшую тетраду результата (команда ANI OF h) и поместить ее в старшую тетраду регистра-аккумулятора А, полученное число записать в ячейку памяти M2 (в команде указывать М). При загрузке ячейки памяти M1 (в команде указывать М) использовать косвенную адресацию, а при загрузке результата в ячейку памяти М2 – прямую. Программу записать в таблицу, аналогичную по форме таблице 12.4.
До выполнения программы вычислить и записать в отчет ожидаемый результат. При этом следует помнить, что логические операции выполняются
30
