RIM - чтение масок прерываний (отсутствует в системе команд МП 8080), после выполнения этой команды в аккумуляторе находится код следующего формата:
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
SID |
I7.5 |
I6.5 |
I5.5 |
IF |
M7.5 |
M6.5 |
M5.5 |
В приведенной таблице:
SID - значение сигнала на входе с одноименным названием:
Ix.5, где х = 7, 6, 5 - состояния сигналов на входах запроса прерывний RSTx.5 ;
IF - состояние триггера разрешения прерываний;
Мх.5, где х = 7, 6, 5 - состояния масок запросов на прерывания RSTx.5, 1:4:1;
SIM - установка масок прерываний (отсутствует в системе команд МП 8080), во время выполнения команда следующим образом трактует содержимое аккумулятора:
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
SOD |
SOE |
x |
R7.5 |
MSE |
M7.5 |
M6.5 |
M5.5 |
В приведенной таблице:
SOD - значение этого бита будет выведена на выход с одноименным названием, если бит SOE установлен;
SOE - бит разрешения передачи последовательных данных, если установлен, и запрещения передачи в противном случае;
R7.5 - бит сброса триггера tRSR7.5, который аппаратно сбрасывается при выходе из обработчика прерываний (см. 2.5), но программист может сбросить этот триггер в произвольное время, используя команду SIM;
MSE - бит разрешения установки масок прерываний, если установлен, и запрещения установки в противном случае;
Мх.5 - маски запросов прерываний RSTx.5, могут быть установлены, если MSE = 1, 1:4:1.
2.8.13. Примеры программирования МП М1821ВМ85А
Начала программирования МП INTEL 8080 с системой команд, составляющей подмножество команд МП М1821ВМ85А, достаточно полно изложены в [7] (см. с. 142...208). В этой работе, в частности, изложены: арифметические и логические операции над байтами; организация циклов; поиск максимума/минимума; работа с подпрограммами и т.п. К этому может быть добавлено: арифметические операции над словами; работа со стеком; поддержка прерываний. В примерах используется ассемблер, встроенный в интегрированную среду разработки программ IDEKOM [8]. Во всех примерах символ ²;² отделяет комментарий от команды.
а) Сложение двух слов
Задание: сложить два целых числа Alpha, Betta (соответствующих типам INTEGER, WORD в языке программирования PASCAL или int, unsigned int в языке программирования СИ). Результат записать в переменную Sum. Все три переменные располагаются в смежных областях адресного пространства памяти МП, начиная с адреса 8000h.
Метод решения: сложение заданных слов производится командой DAD RP. Эта простая задача приведена, в основном, для знакомства с директивами языка ассемблера.
ORG |
8000h |
; Задаем адрес начала программы |
|
Alpha: |
DW |
1111h |
; Инициализируем переменную Alpha |
Betta: |
DW |
2222h |
; Инициализируем переменную Betta |
Sum: |
DS |
2 |
; Резервируем два байта для результата |
Start: |
; Определяем метку начала программы |
||
LHLD |
Alpha |
; (HL):= [Alpha] |
|
XCHG |
; (DE):= [Alpha] |
||
LHLD |
Betta |
; (HL):= [Betta] |
|
DAD |
D |
; (HL):= [Alpha] + [Betta] |
|
SHLD |
Sum |
; [Sum]:= [Alpha] + [Betta] |
|
RST |
4 |
; Останов МП с выходом в МОНИТОР |
|
END |
Start |
; Останов трансляции программы, после ; загрузки программы в ОЗУ МП передать ; управление на метку Start |
б) Уменьшение всех элементов целочисленного массива
Задание: уменьшить все элементы целочисленного массива Data размерности Size = 9 на величину Delta.
Метод решения: уменьшение производится командой DSUB.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.