- •2.4 Выполнение арифметических операций в микропроцессорных
- •1 Основные сведения об информационно-измерительных системах
- •1.1 Место информационно-измерительных систем в современной измерительной технике и информационных технологиях
- •1.2 Классификация иис
- •1.3 Принципы организации и основные структурные схемы иис
- •1.3.1 Измерительные системы
- •1.3.2 Телеизмерительные системы
- •1.3.3 Системы автоматического контроля
- •1.3.4 Системы технической диагностики
- •1.4 Функции микропроцессоров в иис
- •1.5 Преимущества микропроцессорных измерительных систем
- •2 Базовые понятия и определения микропроцессорной арифметики
- •2.1 Системы счисления
- •2.1.1 Классификация систем счисления
- •1. Табличные методы.
- •2. Расчетные методы.
- •2.2 Представление числовых данных в микропроцессорных системах
- •Обратный код.
- •2.2.1 Арифметические флажки
- •2.2.2 Контроль переполнения в микропроцессорных системах
- •2.3 Выполнение арифметических операций в микропроцессорных системах над двоичными числами с фиксированной точкой
- •2.3.3 Операции сдвига в микропроцессорных системах
- •2.4 Выполнение арифметических операций в микропроцессорных системах над числами с плавающей точкой
- •2.4.2 Форматы двоичных числовых данных с плавающей точкой
- •2.4.3 Стандарт ieee-754
- •2.4.5 Сложение и вычитание чисел в форме с плавающей точкой
- •2.4.6 Умножение и деление чисел в форме с плавающей точкой
- •2.5 Представление числовых данных в коде bcd
- •2.5.1 Форматы числовых данных bcd-кодов
- •2.5.2 Арифметические операции над числовыми данными bcd-кодов
- •3 Основы микропроцессорных метрологических систем
- •3.1 Архитектурные особенности вычислительных систем на базе микропроцессора і80х86 в реальном режиме
- •3.1.1 Исследование сегментной структуры программы
- •3.2 Изучение арифметических и логических команд мп і80х86
- •3.2.1 Изучение принципов логического анализа данных
- •3.2.2 Изучение арифметических команд мп і80х86
- •3.3 Обработка массивов на языке Assembler для мп і80х86
- •3.3.2 Команды сравнения, условного и безусловного перехода
- •3.3.3 Оператор цикла
- •3.4 Исследование принципов организации подпрограмм в языке Аssembler для мп і80х86
- •3.4.1 Принципы функционирования стека в мп і80х86
- •3.5 Изучение принципов функционирования микропроцессоров со стековой архитектурой на примере математического сопроцессора і80х87
- •3.5.2 Архитектура математического сопроцессора і80х87
- •Задание:
- •Приложение е. Программа для изучения принципов обработки массивов на языке assembler для мп і80х86
- •Приложение и. Программа для исследования системы команд математического сопроцессора
3.2 Изучение арифметических и логических команд мп і80х86
Для работы с целыми двоичными числами целочисленное АЛУ микропроцессора і80х86 поддерживает более десятка арифметических команд. Основными командами данной группы являются команды сложения, вычитания, умножения и деления.
Команды сложения и вычитания:
add op1,op2 команда сложения (addition), действие: op1:=op1+op2;
sub op2,op2 команда вычитания (subtraction), действие: op1:=op1+op2.
В качестве операндов допускается использовать регистры общего назначения или ячейки памяти размером в байт или слово. Операнды должны совпадать по разрядности и не могут одновременно быть ячейками памяти. Второй операнд может быть представлен непосредственным значением. Команды изменяют флаги переноса СF, переполнения OF, знака SF и нуля ZF.
add BH,15 BH:=BH+15;
sub SI, w SI:=SI+w.
Команды положительного и отрицательного приращения (инкремента и декремента):
inc op инкремент (increment), действие op:=op+1;
dec op декремент (decrement), действие op:=op-1;
В качестве операнда допускается использовать регистр или ячейку памяти размером в байт или слово. Команды inc ор и dec ор эквивалентны командам add op,1 и sub op,1 соответственно, за исключением того, что не изменяют флаг переноса CF, занимают меньший объем памяти и выполняются быстрее соответствующих универсальных команд сложения и вычитания.
Команда умножения целых чисел без знака:
mul op умножение (multiply): AX:=AL*op8, (DX,AX):=AX*op16.
Операнд, указываемый в команде, является одним из сомножителей. Он может быть регистром или ячейкой памяти размером в байт или слово, но не может быть непосредственным операндом. Местонахождение второго сомножителя фиксировано: при умножении байтов он берется из регистра AL, а при умножении слов из регистра AX. Местонахождение результата, имеющего разрядность 2n при умножении n-значных чисел, также фиксировано и не указывается в команде: при умножении байтов результат размером в слово заносится в AX, при умножении слов результат размером в двойное слово заносится в регистровую пару (DX, AX), в AX – младшее слово, в DX – старшее слово. При значениях флагов CF=OF=1 произведение занимает двойной формат, при CF=OF=0 для произведения достаточно формата сомножителей.
Примеры команды умножения:
mul BL AX=AL*BL;
mul CX (DX,AX):=AX*CX.
Команда деления целых чисел без знака:
div op деление (divide): DX:=(DX,AX) mod op16, AX:=(DX,AX) div op16;
AH:= AX mod op8; AL:=AX div op8.
Местонахождение первого операнда (делимого) фиксировано и явно в команде не указывается. Указывается только второй операнд, который может находится находиться в регистре или ячейке памяти, но не может быть непосредственным значением. При делении слова на байт делимое должно находиться в регистре AX, при делении двойного слова на слово делимое должно находиться в регистровой паре (DX, AX), в AX – младшее слово, в DX – старшее слово. В области целых чисел получение точного результата от деления невозможно. Поэтому под делением подразумевается получение сразу двух величин: неполного частного div и остатка от деления mod, которые заносятся в младшую и старшую части делимого соответственно.
Примеры команды деления:
div BL AH:= AX mod BL; AL:=AX div BL;
div CX DX:=(DX,AX) mod CX, AX:=(DX,AX) div CX
Основными логическими командами микропроцессора являются:
or op1, op2 логическое или; действие: op1:=ор1 or op2;
and op1, op2 логическое и; действие: op1:=ор1 and op2;
xor op1, op2 исключающее или; действие: op1:=ор1 xor op2.
Указанные команды используются для выполнения операций поразрядного маскирования: and – для установки нулей в заданных разрядах, or – для установки единиц, xor – для выяснения совпадений значений битов первого операнда с маской. В качестве первого операнда в командах and, or, xor можно использовать регистры общего назначения и ячейки памяти, в качестве второго – дополнительно можно использовать непосредственное значение. Оба операнда одновременно не могут быть ячейками памяти. Команды изменяют флаги SF, ZF, PF. Таблицы истинности, а так же примеры поразрядных логических операций приводятся в табл. 3.1.
Таблица 3.1 – Таблицы истинности, а также примеры поразрядных логических операций
and (и) |
or (или) |
xor (искл. или) |
||||||
Вход |
Выход |
Вход |
Выход |
Вход |
Выход |
|||
А |
В |
Q |
A |
B |
Q |
А |
В |
Q |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
Пример поразрядного маскирования АND |
Пример поразрядного маскирования OR |
Пример поразрядного маскирования ХOR |
||||||
op1 |
хххххххх |
op1 |
хххххххх |
op1 |
10100110 |
|||
op2 |
10110101 |
op2 |
00010010 |
op2 |
00010010 |
|||
Результат |
х0хх0х0х |
Результат |
ххх1хх1х |
Результат |
10110100 |
|||
Команда поразрядного инвертирования:
not op логическое not , действие: op:= not (op),
выполняет изменение значений двоичных разрядов операнда на противоположные.
Для проведения контрольного сравнения битов целесообразно применять команду test op1,op2, которая полностью эквивалентна and, за исключением того, что результат операции логического умножения не сохраняется, а устанавливаются только флаги (SF, ZF, PF). Примеры команд:
-
or AL, 00100000
данная команда устанавливает единицу в 5-м бите AL;
and AH, 11011111
данная команда устанавливает нуль в 5-м бите AН.
Дополняют совокупность логических операций команды логического сдвига. Команда shl op, n (CL) осуществляет сдвиг влево всех битов операнда, а в младшие разряды добавляются нули. Старший бит операнда поступает в флаг переноса СF. В качестве первого операнда могут выступать регистры общего назначения и ячейки памяти, в качестве второго – непосредственное значение числа сдвигаемых битов, или занесенное в регистр–счетчик CL. Команда shr op, n (CL) выполняет сдвиг всех битов операнда вправо; механизм работы и синтаксис аналогичен shl. Пример:
-
shr BX, 5
Выполнение сдвига вправо всех разрядов в BX на 5 битов.
