- •Микропроцессорные контроллеры
- •8.3 Система команд
- •10.4 Организация памяти
- •1. Типы архитектур микроконтроллеров
- •1.1 Основные структуры вычислительных систем
- •1.2 Определение микропроцессора
- •1.3 Шинная организация соединений
- •1.4. Типы архитектур микроконтроллеров
- •2 Микроконтроллер на базе 8-разрядного
- •2.1 Описание микропроцессора кр1821вм85
- •2.2 Режимы работы мп
- •3 Микроконтроллер на базе 16-разрядного микропроцессора к1810вм86
- •3.1 Технические характеристики мп к1810вм86
- •3.2 Назначение сигналов
- •3.3 Программно-доступные регистры
- •3.5 Организация внешней памяти
- •3.6 Структурная схема мк на базе мп к1810вм86
- •3.7 Способы адресации
- •3.8 Система команд мп 1810вм86
- •3.8.1 Команды пересылок данных
- •2. Пересылки “регистр-память” -
- •3.8.2 Команды преобразование данных
- •10. Команды сдвигов –
- •3.8.3 Команды передачи управления
- •1. Безусловные переходы -
- •8 Микроконтроллер на базе омэвм к1816ве48
- •8.1 Технические характеристики к1816ве48
- •8.2 Способы адресации операндов
- •8.3 Система команд
- •Rlc a, rrc a ; циклические сдвиги влево и вправо через признак переноса.
- •8.4 Таймер
- •8.5 Структурная схема мк
- •9 Микроконтроллер на базе омэвм к1816ве51
- •9.1 Технические характеристики омэвм к1816ве51
- •9.2 Организация памяти
- •9.3 Регистры специальных функций
- •9.4 Способы адресации операндов
- •9.5 Система команд
- •Rlc a, rrc a ; циклические сдвиги влево и вправо через признак переноса.
- •9.6 Управление прерываниями
- •9.7. Последовательный ввод-вывод данных
- •9.8 Таймеры
- •11.1 Семейство pic-контроллеров
- •12 Современные тенденции в развитии
- •12.1 Сигнальные процессоры фирмы Texas Instruments
- •12.2 Сигнальные процессоры Analog Devices
- •12.3 Транспьютеры
3.8.2 Команды преобразование данных
Приведем следующие основные команды преобразования данных:
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 / r8AL, в AH –остаток,
DIV r16 ;16-разрядное деление-(DX,AX)/r16AX,в 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.
3.8.3 Команды передачи управления
К командам передачи управления относятся следующие группы команд: - безусловный переход;
условный переход;
вызов подпрограммы;
программное прерывание;
циклы.
1. Безусловные переходы -
JMP <метка> ; переход в произвольную точку
JMP SHORT <метка> ; короткий переход в пределах 127 адресов
JMP [r16/m] ; переход по косвенному адресу в пределах текущего сегмента,
JMP FAR <метка> ; длинный переход в другой сегмент
JMP WORD PTR [r+disp] ; переход косвенному адресу в другой сегмент, когда по адресу, указанному в квадратных скобках определяется исполнительный адрес EA в текущем сегменте. Из памяти извлекаются 4 байта, из которых байты ЕА+2 и ЕА+3 загружаются в сегментный регистр, а байты ЕА и ЕА+1 в регистр адреса IP.
2. Условные переходы – передача управления в зависимости от результата предыдущей операции. Все команды условных переходов имеют одинаковый 2-х байтный формат, в котором во 2-м байте указывается смещение с учетом знака. То есть условные переходы выполняются в пределах текущей страницы на 127 адресов.
Мнемокоды условных переходов строятся по шаблону – J***<метка>, где (*) – обозначение условий для выполнения перехода по метке. Используются следующие признаки:
Z (zero) - нулевой результат; C (carry) – перенос; P (parity) – четность;
S (sign) – знак результата; N (not) – отрицание; E (equal) – равенство;
G (greater) – больше; L (less) – меньше; A (above)– над; B (below)– под.
JE/JZ <метка>; переход, если равно или по нулю,
JNE/JNZ <метка>; переход, если не равно или не по нулю,
JB/JNAE <метка>; переход, если меньше или не больше и не равно,
JA/JNBE <метка>; переход, если больше или не меньше и не равно,
JL/JNGE <метка>; переход, если меньше или не больше и не равно,
JG/JNLE <метка>; переход, если больше или не меньше и не равно.
3. Вызов подпрограммы – CALL. Позволяет вызывать подпрограмму как в текущем сегменте, так и в другом сегменте. Формат команд тот же, что и для безусловного перехода кроме короткого перехода.
При выполнении команды CALL в стеке запоминается адрес следующей команды – как содержимое регистра IP, так и содержимое сегментного регистра CS.
4. Возврат по адресу в стеке – RET. Используется также 4 формата.
5. Команды организации циклов – LOOP. По умолчанию используется регистр CX в качестве счетчика шагов.
LOOP <метка> ; выполняется переход по метке, пока CX 0,
LOOPZ <метка> ; цикл, пока Z=1 (условие нуля) и CX0,
LOOPNE <метка> ; цикл, пока не равно и CX0, то есть проверяется два условия.