ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 15.06.2025
Просмотров: 4518
Скачиваний: 2
16.17. Команды для управления процессором
NOP означает по operation (НОП, «пустая команда»). Команда служит как «держатель места» (place holder) для команд, которые должны быть использованы позднее, и как «потребитель времени».
EI (разрешение прерывания) и DI (запрещение прерывания) уста навливают и запирают ШТЕ-триггер. Если ШТЕ-триггер заперт, все запираемые прерывания блокированы.
Таблица 16.16. Стек, |
соответствующий |
примеру, показанному |
в |
|||
табл. 16.15. |
Показано состояние, |
имеющее место |
во |
|||
время выполнения подпрограммы (TOS = top of staca) |
||||||
ЗУ |
Комментарий |
|||||
Адрес |
Содержание |
|||||
17F7 |
08 |
PSW |
(FLAG) |
<-TOS при |
PC = 1204 |
|
17F8 |
ЕО |
PSW |
(A) |
|||
1 17F9 |
FE |
L |
||||
17FA |
1С |
H |
||||
17FB |
D1 |
E |
||||
17FC |
80 |
D |
||||
17FD |
ЕС |
С |
||||
17FE |
OF |
В |
||||
17FF |
OF |
PCL |
||||
1800 |
10 |
PCH |
||||
1801 |
FE |
•<—TOS перед |
вызовом |
подпрогрс1Ммы |
||
С помощью команд RIM (read interrupt mask, «считывание мас ки прерываний») и SIM (set interrupt mask, «установка маски пре рываний») можно считать и протестировать регистр прерываний. Значение соответствующих битов различно в зависимости от того, считывается или загружается регистр прерываний. Загрузка реги стра прерывания (SIM):
Dj |
£»б |
Оъ |
Di |
Da |
D2 |
Di |
Do |
SOD |
SOE |
X |
R7.5 |
MSE |
M7.5 |
M6.5 |
M5.5 |
Бит 0 |
блокирование прерывания RST5.5 |
|
Бит 1 |
блокирование прерывания RST6.5 |
|
Бит |
2 |
блокирование прерывания RST7.5 |
Бит |
3 |
J\ля записи содержания накапливающего регистра бит |
3 должен быть равен 1 |
||
394 Глава 16. Структура, система команд и работа микропроцессора
Бит 4: возврат в исходное состояние (reset) триггера RST7.5 (К8Т7.5-триггер запоминает поступающие прерыва ния, также и тогда, когда прерывание заблокировано. Содержание К8Т7.5-триггер можно стереть с помо щью бита 4 или возврата в исходное состояние).
Бит 5: не определен
Биты 6,7: управление связью с SOD.
Считывание регистра прерывания (RIM):
D-, |
Пь |
Db |
Di |
Оз |
D2 |
Di |
Do |
SID |
17.5 |
16.5 |
15.5 |
IE |
М7.5 |
М6.5 |
M5.5 |
Бит 1: показывает маску ^\ля прерывания RST5.5 (О — разре шено)
Бит 2: показывает маску р^ля прерывания RST6.5 (О = разре шено)
Бит 3: показывает состояние INTE-триггера (1 = освобождено)
Бит 4 15.5 стоит на очереди
Бит 5 16.5 стоит на очереди
Бит 6 17.5 стоит на очереди
16.18. Ассемблерные команды
Различают ассемблерные команды и команды на ассемблерном языке.
•Команды на ассемблерном языке (напр., LDA 09FEH) устана вливают исходную программу (source-code)
•Ассемблерные команды служат р^ля перевода исходной про граммы (source code) в объектную программу (object code). Они сообш;ают о том, с какого адреса программа записыва ется в ЗУ, и дают указания по размеп];ению символических переменных по ячейкам ЗУ. Например, команда ORG 1000Н говорит о том, что следующие команды должны быть разме- ш;ены начиная с ячейки ЗУ 1000Н.
16.18. Ассемблерные команды
Ниже обсуждаются команды на ассемблерном языке, соответствуюш;ие различным группам. Ассемблерная программа осуш;ествляет перевод исходной программы (source code) в объектную програм му, но наряду с этим решает и другие задачи:
1.В обп1;ем случае машинная программа привязана к определен ным ячейкам в ЗУ. Например, при переходах всегда должны быть заданы адреса переходов. Но эти адреса зависят от по ложения в программе.
Чтобы упростить работу программиста, ассемблерная програм ма в состоянии проводить расчет конкретных адресов (фи зических адресов) на основе символических адресов перехода. Сверх того в ассемблер должно быть сообщено, где программа должна находиться в ЗУ. Это реализуется командой:
OR G addr
2.Ассемблеру должно быть сообщено, где команда оканчивается, потому что там оканчивается перевод. Ц^ля. этого служит END.
3.Точно также могут быть обработаны символические имена «name», относящиеся к константам ассемблера. При этом ка ждой константе присваивается 8-битовое двоичное число.
Имя |
Оператор |
Операнд |
Воздействие |
||
имя |
DB |
Data |
Определяет и иницигшизирует |
8-битовую |
|
переменную |
|||||
имя |
DW |
Data 16 |
Определяет |
и инициализирует |
16-битовую |
переменную. |
|||||
имя |
DS |
n |
Резервирует |
п байт |
|
4.Ассемблером игнорируются комментарии, которые должны на чинаться точкой с запятой.
5.Ассемблерная программа производит проверку на синтаксиче ские ошибки.
6.Благодаря определению макросов (macros, макрокоманда) за траты на программирование могут быть уменьшены.
При ассемблировании используется много проходов (pass). Сна чала переводятся команды. В течение дальнейших проходов распре деляются символические адреса и цели переходов. Перевод команд в машинный код производится с помош;ью списков, специфических ^[^ля данного процессора.
Глава 16. Структура, система команд и работа микропроцессора
Таблица 16.17. Пример применения ассемблерных |
операторов. |
||||
Адрес |
Машин, |
Метка |
Операц. |
Операнд |
Комментарий |
код |
код (ор code) |
||||
К1 |
EQU |
OAIH |
; наложение |
||
константы |
|||||
PRT |
EQU |
OIH |
; наложение адреса |
||
порта |
|||||
ORG |
lOOOH |
; определение зоны |
|||
команд |
|||||
1000 |
ЗА А1 |
A, Kl |
; переход в МК |
||
1002 |
СЗ ОС 10 |
JMP |
MK |
; добавление К1 |
|
1005 |
Сб А1 |
ADl |
Kl |
; перезапись в |
|
VAR1 |
|||||
1007 |
32 00 13 |
STA |
VARl |
; выдача в порт |
|
100А |
D3 01 |
OUT |
PRT |
; загрузка в VAR2 |
|
ЮОС |
ЗА 01 13 |
МК |
LDA |
VAR2 |
; зона переменных |
ORG |
1300H |
||||
1300 |
VAR1 |
DS |
1 |
; 1 байт для VAR |
|
1301 |
FE |
VAR2 |
DB |
IFEH |
; инициализация |
переменных |
|||||
В примере используются ассемблерные операторы ORG, EQU, DS, DB.
С помощью оператора ORG определяется положение зоны в ЗУ, которая содержит команды (от адреса 1000Н) и данные (от адреса 1000Н). Ассемблер присваивает затем командам и меткам перехода соответствующие адреса.
Здесь метка МК определяется из ассемблерной программы. Ас семблер вводит в этом случае адрес перехода 1000Н. Адрес переза писывается в последовательность из младших и старших битов.
Оператор EQU применяется для определения констант К1 и PRT. Когда в тексте встречаются эти константы, ассемблер вставляет соответствующие значения. Это служит обеспечению наглядности программы.
Оператор DS вначале резервирует ячейку ЗУ и присваивает ей адрес и символическое имя. В данном случае имеем имя VAR1 и адрес 1300. Теперь программист может обращаться с VAR1 как с адресом, это означает с использованием команд, в которых при меняется тип адресации «Direct» (например, LDA addr. STA addr.). При использовании DB, также как и при использовании DS, резер вируется ячейка ЗУ и фиксируется символическое имя. В случае
16.19. Примеры программ
DB дополнительно производимая инициализация. В данном случае в ячейку ЗУ 1301 записывается значение FE. Оно может быть пе резаписано с помощью программы. В примере необходимая иници ализация портов не проводилась.
16.19. Примеры программ
16.19.1. Программирование параллельного интерфейса 8255
Параллельный интерфейс 8255 должен быть запрограммирован пе ред вводом и выводом данных. Для этого каналы А, В CLow и CHigh должны быть запрограммированы на «считывание данных» и на «пе ресылку данных».
Рис. 16.11. Подключение параллельного интерфейса 8255 (показаны толь ко важнейшие разъемы).
В рассматриваемом случае должно быть принято, что интерфейс должен быть подключен так, как это показано на рис. 16.11. Итак, адреса интерфейса лежат в диапазоне от 0004Н до 007Н. В соответ ствии с рис. 16.11 выбирается командный регистр с Ао = ^ i = 1. Он имеет адрес 0007Н. Адреса регистров данных указаны в табл. 16.18.
Таблица 16.18. Адреса регистров параллельного интерфейса 8255. Вывода в соответствии с рис. 16.11.
Адрес |
Регистр |
|
0004Н |
Регистр данных А-порта |
|
0005Н |
Регистр данных |
В-портэ |
ОООбН |
Регистр данных |
С-порта |
0007h |
Командный регистр |
|
398 Глава 16. Структура, система команд и работа микропроцессора
Командный регистр р^ля режима работы О выстроен следуюш;им образом:
1>7 |
Db |
Db |
Di |
Di |
D2 |
Di |
Do |
1 |
0 |
0 |
А |
СН |
0 |
В |
CL |
Если какой-либо канал должен быть подключен к входу, должен быть установлен соответствуюш;ий бит CL = CLow, СН = CHigh. В режиме работы О данные хранятся в регистре данных пока они не будут перезаписаны на новые данные.
Таблица 16.19. Пример программы для ввода и выдачи данных для парал лельного интерфейса 8255.
Адрес |
Машин, |
Метка |
Операц. |
Операнд |
Комментарий |
код |
код (ор code) |
||||
ORG |
lOOOH |
; зона комалд |
|||
' 1000 |
ЗЕ 90 |
MVI |
A, 90H |
; упрсшляющий байт |
|
OUT |
07H |
А вход, ВС выход |
|||
1002 |
ВЗ 70 |
; запоминание |
|||
04H |
управляющего бита |
||||
1004 |
НИ 04 |
IN |
; считывание, |
||
05H |
канал А |
||||
1006 |
ВЗ 05 |
OUT END |
; выдача, кансш В |
16.19.2. Передача данных в подпрограмму
Передача данных из вызываемой программы в подпрограмму про исходит, как правило, через регистры. Если их не хватает, данные после вызова подпрограммы могут быть отложены.
В примере, показанном в табл. 16.20, в подпрограмму передается число 1F88H. Для этого с помощью команды XTHL приносится содер жание PC из стека. Затем при INXH пропускается команда JMP, так что в паре регистров HL стоит адрес младшего байта отыскиваемого элемента данных. Теперь он может быть загружен с использованием индикации. При следующей команде INXH осуществляется дальней шее просчитывание к адресу старшего байта элемента данных, и он загружается с индикацией. С помощью такого порядка действий может быть обработан весь список параметров.
Другие примеры программ и подробное введение в программи рование микропроцессора 8085 с помощью ассемблера можно найти в литературе, позиции [18] и [16].