Команды преобразование данных
Система команд МП 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 Все материалы защищены законодательством РФ.
|