Сделай Сам Свою Работу на 5

Команды преобразование данных





Система команд МП 1810ВМ86

Команды в МП 1810ВМ86 имеют переменную длительность, кратную байту и занимающую формат от 1-го до 6-ти байт. Самые короткие команды – это команды имеющие регистровую адресацию (рисунок 3.8.1,а), а самые длинные команды относятся к прямой адресации, когда в команде указывается не только 16-разрядное смещение, но и еще 16-разрядный сегментный регистр (рисунок 3.8.1,б).

 

 


 

 

Рисунок 3.7.2 Минимальный (а) и максимальный (б) форматы команд

 

Байт кода операцииKOП. В первом байте команды указывается код операции и номер регистра, а также может быть указано направление передачи данных по отношению к регистру reg в поле пост-байта с помощью разряда d. При d=0 – регистр является источником данных, а при d=1 – приемником. Разряд w – определяет разрядность регистров: при w=1 – 16-разрядные, а при w=0 – 8-разрядные регистры.

Пост-байт –это байт после кода операции КОП. Пост-байт используется для расширения способов адресации и имеет следующее значения разрядов:

- mod – два разряда, определяющие режим использования полей disp.

00 – disp отсутствует, 01 – disp имеет длину в 1 байт, 01 –disp



имеет длину в 2 байта, 11 – источником операнда является

регистр, номер которого содержится в поле reg;

- reg - номер регистра – источника 2-го операнда;

- r/m - код, определяющий вид косвенной адресации (таблица 3.7.1).

За пост-байтом могут следовать байты константы при непосредственной адресации, или байты смещения адреса disp и номер сегментной страницы seg, загружаемый в соответствующий сегментный регистр.

Выделим 3 основных типа команд:

- пересылки;

- преобразование данных;

- команды передачи управления.

-

Команды пересылок данных

Фактически по этим командам идет копирование данных, так как при пересылке код в источнике остается.

1. Пресылки “регистр-регистр” -

MOV r1, r2 ; r2® r1;

Пересылки “регистр-память” -

MOV r, [disp ] ; M[disp ] ® r

MOV [disp ], r ; r ® M[disp ];

3. Непосредственная загрузка регистра или памяти -

MOV r[disp ] , data ; данные ® r или в память ® M[disp ]

4. Обращение к стеку -

PUSH r ; запись в стек,

POP r ; чтение из стека;

5. Ввод/вывод данных с использованием прямой адресации -

IN AX, P[N8] ; ввод из порта с адресом N8 в регистр AX,



IN AL, P[N8]; ввод 8-разрядного кода в регистр AL,

OUT P[N8], AX ; вывод из регистра АХ в порт с адресом N8,

OUT P[N8], AL ; вывод 8-разрядного кода из регистра AL.

При прямой адресации возможно обращение к 256 внешним устройствам;

6. Ввод/вывод данныхс использованиемкосвенной адресации. Для косвенной адресации используется регистр DX для хранения адреса ВншУ. Косвенная адресация позволяет обратиться к 64К внешних устройств. Команды имеют следующий вид –

IN AX, DX ; ввод из порта с адресом в DX в регистр AX,

IN AL, DX ; ввод 8-разрядного кода в регистр AL,

OUT DX, AX ; вывод из регистра АХ в порт с адресом в DX;

7. Команды пересылок адреса:

LEA r, [r1+r2+disp]; исполнительный адрес EA, сформированный из источников, указанных в квадратных скобках, сохраняется в регистре r,

LDS r, [r1+r2+disp]; по исполнительному адресу указанному в команде из памяти извлекается 4 байта, которые начиная с первого записываются: в младший байт регистра r, в старший байт регистра r, в младший байт сегментного регистр DS и в старший байт сегментного регистр DS,

LЕS r, [r1+r2+disp]; отличается от команды LDS тем, что используется сегментный регистр ES.

Команды LDS и LES используются при обращении к данным, находящимся вне текущего сегмента DS или ES. Приведем пример использования команды LDS. Пусть пара 16-разрядных адресов [12C0:100A] – база сегмента и смещение в сегменте предварительно загружается в память с адреса 70F25h. С помощью команды LDS BX, [0F25h]мы обращаемся к памяти и извлекаем сначала два байта 100Ah и загружаем их в регистр ВХ, а затем извлекаются 3-й и 4-й байты, которые загружаются в DS. Далее выполняется команда MOV AL, [BX], по которой из ячейки памяти, смещение адреса, которое записано в BX, извлекается байт в аккумулятор AL. Схема перемещения данных представлена на рисунке 3.7.3.



 


Рисунок 3.7.3 Пример использования команды LDS

 

 

Команды преобразование данных

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

1. Арифметическое сложение без учета переноса -

ADD r1, r2/m ; r1+r2 ® r1 или r1 + m ® r1

ADD r/m, data ; r + data® r или m + data® m,

где r1, r2 - любые два регистра, m – ячейка памятис прямой или косвенной адресацией, data - константа форматом в один или два байта;

2. Арифметическое сложение с учетом переноса CF-

ADС r1, r2/m ; r1+r2 +CF ®r1 или r1 + m +CF ® r1

ADС r/m, data ; r+data +CF ®r или m +data+CF ® m

3. Вычитание без учета заема CF -

SUB r1, r2/m ; r2 – r1 ® r1 или r2 – m ® r1

SUB r/m, data ; data - r ® r или data - m® m;

4. Вычитание c учетом заема CF -

SBB r1, r2/m ; r2 – r1 -CF® r1 или r2 – m - CF® r1

SBB r/m, data ; data - r-CF ® r или data - m-CF ® m;

5. Инкремент–декремент -

INC r/m , DEC r/m

6. Умножение - MUL – без учета знака, IMUL – с учетом знака -

MUL r8 ; 8-разрядное умножение - AL * r8® AX,

MUL r16 ; 16-разрядное умножение - AX * r16® DX, AX

7. Деление - DIV – без учета знака, IDIV – с учетом знака

DIV r8 ; 8-разрядное деление - AX / r8®AL, в AH –остаток,

DIV r16 ;16-разрядное деление-(DX,AX)/r16®AX,в DX –остаток;

При делении на 0 выполняется аппаратное прерывание и выдается сигнал об ошибке.

8. Команды сравнения – выполняется сравнение операндов, указанных в команде, в виде вычитания, но результат не записывается, а изменяются все признаки (ZF, CF, SF, PF, OF) -

CMP r1, r2/m

CMP r1/m, r2

CMP AL(AX), data8(16);

9. Логические команды

AND r1, r2/m ; r1 Ù r2/m ®r1

AND AL(AX), data8(16 ) ; Al(AX) Ù data8(16)®AL(AX)

OR r1, r2/m ; r1 Ú r2/m ®r1

OR AL(AX), data8(16 ) ; Al(AX) Ú data8(16)®AL(AX)

XOR r1, r2/m ; r1 Å r2/m ®r1

XOR AL(AX), data8(16 ) ; Al(AX) Å data8(16)®AL(AX);

10. Команды сдвигов –

SHL r/m, SHR r/m ; логические сдвиги влево-вправо,

SAL r/m, SAR r/m ; арифметические сдвиги влево-вправо, когда сохраняется знак числа, то есть старший разряд,

ROL r/m, ROR r/m ; циклические сдвиги влево-вправо

RСL r/m, RСR r/m ; циклические сдвиги влево-вправо через признак CF.

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.