
- •Цифровые и микропроцессорные устройства
- •Часть 3
- •Введение
- •Порядок выполнения работы
- •Структурная схема умк
- •Назначение органов управления, ввода и индикации
- •Включение и запуск умк
- •Команды системной программы монитор умк
- •Команда просмотр и модификация содержимого ячейки памяти
- •Команда просмотр и модификация содержимого регистров
- •Команда заполнение массива памяти константой
- •5.4 Команда старт программы
- •Команда подсчет контрольной суммы
- •Команда перемещение массива памяти
- •Содержание отчета
- •Контрольные вопросы
- •Требования к знаниям и умениям учащихся
- •Методические указания
- •Теоретическое обоснование
- •Команды загрузки регистров общего пользования
- •Команды манипуляции 16-разрядными данными
- •Команды загрузки регистра указателя стека
- •Команды пересылки
- •Команда загрузки счетчика команд pchl
- •Команды прямой записи в память
- •Команды чтения памяти по прямому адресу
- •Команды чтения-записи памяти при косвенной адресации через регистровую пару hl
- •Команды чтения/записи при прямой адресации через регистровые пары bc, de
- •Приборы, оборудование и документация
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Требования к знаниям и умениям учащихся
- •Методические указания
- •Теоретическое обоснование
- •Команды сложения 8-разрядных чисел
- •Команды вычитания 8-разрядных чисел
- •Команды двойного сложения
- •Команды инкремента
- •Команды декремента
- •Приборы, оборудование и документация
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Команды логического сложения
- •Команды логического умножения
- •Команды исключающие или
- •Команда инверсия
- •Команды сравнения
- •Теоретическое обоснование
- •Команды сравнения с содержимым регистра
- •Команды сдвига
- •Теоретическое обоснование
- •Команды циклического сдвига
- •Команды сдвига через перенос
- •Приборы, оборудование и документация
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Требования к знаниям и умениям учащихся
- •Методические указания
- •Теоретическое обоснование
- •Команды безусловного перехода
- •Команды перехода по признаку – ноль
- •Команды перехода по признаку с – перенос
- •Команды перехода по признаку р – четность
- •Приборы, оборудование и документация
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Требования к знаниям и умениям учащихся
- •Методические указания
- •Теоретическое обоснование
- •Команды записи в стек, восстановления и обмена стеком
- •Команды вызова подпрограммы и возврата
- •Изучение архитектуры однокристального микроконтроллера pic16f84 Цель работы
- •Подготовка к выполнению работы
- •Вопросы для самоконтроля
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Требования к знаниям и умениям учащихся
- •Литература
- •Пример выполнения задания на симуляторе sim8085 microprocessor simulator
- •Содержание
- •Цифровые и микропроцессорные устройства
- •Часть 3
Команды вызова подпрограммы и возврата
CALL <B3><B2> – вызов подпрограммы по адресу <B3><B2>, указанному во втором и третьем байтах команды;
RET – возврат из подпрограммы.
Записать в память программу подсчета контрольной суммы массива (таблица 80), использующую команду вызова подпрограммы сравнения содержимого пар рег. HL и DE (таблица 81).
Таблица 80 – Контрольная программа подсчета контрольной суммы массива,
использующая подпрограмму сравнения содержимого пар регистров
Адрес |
Метка |
Команда |
Операнд |
Машинный код |
Комментарий |
0840 |
|
LXI |
H, 0100H |
21 00 01 |
; Загр HL – нач. адрес ; массива |
0843 |
|
LXI |
D, 017FH |
11 7F 01 |
; Загр. DE – конеч. адрес ; массива. |
0846 |
|
LXI |
SP, 0B00H |
31 00 0B |
; Загр SP=0В00H, нижняя ; граница стека |
0849 |
|
MVI |
B, 00H |
06 00 |
; Загр. В=00Н – исх. знач. ; КС |
084B |
М1 |
MOV |
A, B |
78 |
; Подсчет КС массива ; памяти |
084C |
|
ADD |
M |
86 |
; Подсчет КС массива ; памяти. |
084E |
|
INX |
H |
23 |
; HL=(HL)+1, адр. след. ; ячейки |
084F |
|
CALL |
М2 |
CD 56 08 |
; Вызов подпрограммы ; сравнения |
0852 |
|
JNC |
М1 |
D2 4B 08 |
;Переход на адрес ;080ВН, если (ТС)=0 |
0855 |
|
HLT |
|
76 |
; Останов |
Таблица 81 – Подпрограмма сравнения содержимого пар регистров HL и DE
Адрес |
Метка |
Команда |
Операнд |
Машинный код |
Комментарий |
0856 |
М2 |
MOV |
A, E |
7B |
; Подпрограмма сравнения |
0857 |
|
SUB |
L |
95 |
; Если (HL)>(DE), то (ТС)=1 |
0858 |
|
MOV |
A, D |
7A |
; Иначе (ТС)=0 |
0859 |
|
SBB |
H |
9C |
; |
085A |
|
RET |
|
C9 |
; |
Выполнить программу:
СТ0840 0855ВП.
Определить значение контрольной суммы заданного массива (содержимое регистра В). Сравнить полученное значение с результатом подсчета контрольной суммы с помощью команды ПОДСЧЕТ КОНТРОЛЬНОЙ СУММЫ системной программы МОНИТОР, они должны совпадать. Записать в отчет полученное значение контрольной суммы.
Выполнить программу поэтапно, устанавливая точки останова (ТО) в соответствии с таблицей 82:
СТ0840Н ТОВП.
Записать в таблицу 82 содержимое указателя стека SP в точках останова.
Таблица 82 – Результаты выполнения контрольной программы подсчета контрольной суммы массива
Точка останова |
ТО1=084FH |
ТО2=0856H |
ТО3=085АH |
ТО4=0852H |
ТО5=0855H |
(SP) |
|
|
|
|
|
В точке останова ТО3 посмотреть содержимое ячеек памяти с адресами SP, SP+1. В них должны находиться мл. и ст. байты адреса возврата (таблица 83).
Таблица 83 – Содержимое стека в точке останова ТО3
(М) по адр. (SP) |
52Н |
(М) по адр. (SP+1) |
08Н |
Задание 2:
Написать с адреса 0А20Н проверочную программу подсчета контрольной суммы массива.
Заполнить массив (0А50Н…0А6FН) константой ЕЕН:
начальный адрес массива загрузить в пару регистров HL;
константу ЕЕН загрузить в регистр D;
заполнение массива константой оформить в виде цикла;
счетчик циклов организовать на регистре Е.
Подсчитать контрольную сумму этого массива (без учета переноса):
подсчет контрольной суммы оформить как подпрограмму;
значение контрольной суммы записать в регистр С;
начальный адрес подпрограммы 0950Н;
нижняя граница стека 0В50Н.
Алгоритм решения задачи и алгоритм подпрограммы представлены на рисунках 5 и 4 соответственно.
Программу и подпрограмму записать в таблицы, аналогичные по форме таблицам 80 и 81 соответственно.
Записать в память УМК и выполнить проверочную программу подсчета контрольной суммы. Указать в отчете значение контрольной суммы. Полученное значение контрольной суммы сравнить с результатом, полученным при использовании команды ПОДСЧЕТ КОНТРОЛЬНОЙ СУММЫ системной программы МОНИТОР, они должны совпадать.
В
ыполнить программу поэтапно, устанавливая точки останова аналогично контрольной программе (таблицы 80 и 81). Результаты записать в таблицы, аналогичные по форме таблицам 82 и 83. Сделать выводы о содержимом указателя стека в каждой точке останова и содержимом стека в ТО3.
Рисунок 4 – Алгоритм подпрограммы подсчета контрольной суммы
Рисунок
5 – Алгоритм решения задачи
ЛАБОРАТОРНАЯ РАБОТА № 20