Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MPS.doc
Скачиваний:
29
Добавлен:
17.04.2019
Размер:
1.08 Mб
Скачать

8.2 Способы адресации операндов

В ОМЭВМ К1816ВЕ48 в качестве источников адреса при косвенной адресации используются регистры R1, R0 и А, при этом в мнемонике косвенная адресация отмечается значком @ (коммерческая “a”).

Например,

MOV @R0, A ; переслать байт из A в память по адресу,

хранящемуся в R0, или сокращенно – A M[R0],

MOV A, @R1 ; M[R1]  A.

8.3 Система команд

1. Пересылки данных – фактически выполняется копирование данных, то есть при пересылке в источнике байт сохраняется.

Все пересылки данных в системе команд ОМЭВМ К1816ВЕ48 выполняются только через аккумулятор!

a). Пересылки типа “регистр-регистр”:

MOV A, Rn ; Rn A , где Rn - любой регистр R7-R0,

MOV Rn,A ; A Rn ,

MOV A,#D8; данные D8 A.

б). Пересылки типа “память-регистр”. Используется только косвенная адресация. Команды обращения к внутреннему ОЗУ (64 ячейки) имеют вид: MOV A, @R0 или R1; M[R0(1)]  A,

MOV @R0(1),A ; A M[R0(1)],

MOV @R0(1),#D8 ; данные D8M[R0(1)] .

Для обращения к внешнему ОЗУ (256 ячеек) используются команды:

MOVX A, @R1(0) ; M[R0(1)]  A;

MOVX @R0(1), A ; A M[R0(1)].

в). Обмен данными – выполняется также только через аккумулятор.

XCH A,Rm ; A Rm,

XCHD A,@R0(1); A M[R0(1)].

2. Преобразование данных. Для операций с двумя операндами по умолчанию в качестве источника одного операнда используется аккумулятор и результат записывается также в аккумулятор. Основные команды преобразования данных:

a). команды сложения

ADD A, Rm ; A + RmA,

ADD A, @R0(1) ; A+ M[R(0)1]→A,

ADD A, #D8 ; A+ #D8→A;

б). команды сложения с учетом признака переноса С, используются все типы операндов, что и для сложения без учета признака С

ADDC A, Rm ; A + Rm +C →A;

в). вычитания нет;

г). инкремент-декремент

INC A ; A+1→A,

INC Rm ; Rm +1→A,

DEC A ; A-1→A,

DEC Rm ; Rm -1→A;

д). преобразование кода в аккумуляторе

CLR A ; A=0

CPL A ;обратный код (по разрядное инвертирование);

е). логические операции

ANL A, Rm ; A RmA,

ORL A, Rm ; A Rm →A,

XRL A, Rm ; A RmA, “исключающее ИЛИ”;

ж). сдвиги

RL A, RR A ; циклические сдвиги влево и вправо без учета признака переноса

Rlc a, rrc a ; циклические сдвиги влево и вправо через признак переноса.

3. Ввод-вывод данных. При выводе данных содержимое аккумулятора пересылается в соответствующий порт и остается там без изменения до следующей команды вывода. Основные команды ввода-вывода данных следующие:

а). для порта P0 ввод-вывод данных сопровождается строб-импульсом на выводах RD (чтение-ввод) и WR(запись-вывод). Так как Р0 используется для организации шины данных при подключении внешней памяти, то порт Р0 обозначается BUS -

INS A, BUS ; ввод через Р0 в А,

OUTL BUS, A ; вывод из А в Р0 ;

б). для портов P1, P2 -

IN A, P1(P2) ; ввод через порты Р1 или Р2 в А,

OUTL P1(P2), A ; вывод из А в Р1 или Р2 ;

в). логические операции при вводе данных через порты. Выполняется поразрядное преобразование вводимого байта и константы, указанной в команде с записью результата в аккумулятор –

ANL BUS, #data ; ORL BUS, #data ; XRL BUS, #data ;

ANL P1(P2), #data ; ORL P1(P2), #data ; XRL P1(P2), #data .

4. Команды передачи управления. В системе команд ОМЭВМ К1816ВЕ48 используется расширенная система признаков для реализации условных переходов. Наряду с традиционными признаками, такими как: Z – нулевой результат, С – перенос, используются дополнительные признаки:

F0, F1 – пользовательские признаки, устанавливаемые программно с помощью команд установки признаков в “0” - СLR F0(F1) , и команд установки признаков в “1” - CPL F0(F1) ;

T0, T1 – аппаратные признаки (физические входы ОМЭВМ);

INT – вход запроса на прерывание (высший приоритет);

TF – прерывание от таймера (низший приоритет).

В формате команд передачи управления следующий необходимо указать 12-разрядный адрес. Вследствие ограничения на формат команды в виде двух байт разработчикам ОМЭВМ удалось разместить только 11 разрядов адреса:

Старший разряд адреса A11 назначается программно командой:

CEL MB0(1); A11 = 0 или A11 = 1, при этом выбирается адресное пространство по 2 кбайта:

Основные команды передачи управления следующие:

а). безусловные переходы –

JMP <Adr11> ; безусловный переход в пределах адресного пространства в 2 кбайта, определяемого разрядом A11;

JMPP @A ; безусловный косвенный переход по адресу в аккумуляторе. Так как аккумулятор 8-разрядный, то переход осуществляется в пределах 256 адресов страницы, определяемой текущим состоянием старших разрядов программного счетчика РС;

б). условные переходы по состоянию признака, при этом общая запись мнемокода может быть представлена в виде -

J* < Adr8> ; переход, если признак (*)=1,

например, JC < Adr8>, JZ < Adr8>, JF0 < Adr8>, JF1 < Adr8> ,

JTF < Adr8>, JT0 < Adr8>, JT1 < Adr8>,

или в виде:

JN* < Adr8> ; переход, если признак (*)=0,

например, JNC < Adr8>, JNZ < Adr8>, JT0 < Adr8>, JT1 < Adr8>.

Условные переходы выполняются в пределах 256 адресов страницы памяти, определяемой текущим состоянием старших разрядов программного счетчика РС;

в). условные переходы по состоянию битов В0 – В7 в аккумуляторе -

JB0 < Adr8> – JB7 < Adr8> ; переход, если бит =1;

г). вызов подпрограммы -

CALL < Adr11> ,

При выполнении команды CALL реализуется следующие операции:

- полный 12-разрядный адрес следующий команды и разряды D7-D4 PSW в виде 2-х байтов записываются в стек;

- в РС записываются 11 разрядов начального адреса подпрограммы;

- в разряде А11 сохраняется текущее состояние банка памяти, определяемое командой CEL MB0(1)

- выполняется переход по начальному адресу подпрограммы;

д). возврат по адресу в стеке -

RET ; без восстановления PSW,

RETR ; с восстановлением PSW;

е). управление прерываниями -

EN I ; разрешить,

DIS I ; запретить.

При выполнении прерываний реализуется следующие операции:

- заканчивается текущая команда;

- полный 12-разрядный адрес следующий команды и разряды D7-D4 PSW в виде 2-х байтов записываются в стек;

- в РС записываются фиксированные начальные адреса подпрограмм обработки прерывания – 003h для внешнего запроса на прерывание со входа INT и адрес 007h для запроса от таймера;

- выполняется переход по начальному адресу подпрограммы обработки прерывания, в конце которой должна стоять команда RETR.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]