Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Арифметические команды




 

Все арифметические команды устанавливают флаги CF, PF, AF, ZF, SF, OF в зависимости от результатов выполнения команды.

Команды работают с двоичными числами, которые могут иметь длину 8 или 16 бит (байт или слово).

Отрицательные числа представляются в дополнительном коде.

Двоично-десятичный код (ДДК или ВСД – англ.) числа микропроцессор хранит в двух форматах: в упакованном и неупакованном.

Если до операции числа представляются не в двоичной системе счисления, то в микропроцессоре семейства 80х86 используются специальные команды для последующего правильного представления его в том или ином формате.

Команды сложения

В языке ассемблера командами сложения являются:

ADD < операнд 1>,< операнд 2>

ADC < операнд 1>,< операнд 2>

INC < операнд 1>

Команда ADD прибавляет содержимое источника к содержимому приемника и сохраняет результат в приемнике, т.е. выполняет следующее арифметическое действие:

< операнд 1> = < операнд 1>+< операнд 2>

В качестве приемника можно использовать один из регистров общего назначения 8-ми и 16-ти разрядный или переменную в памяти размерностью в байт или слово.

В качестве источника можно также использовать один из регистров общего назначения (8-ми или 16-ти разрядные), переменную в памяти (байт или слово), а также константу размерностью в байт или слово.

Команда ADC применяется в том случае, если есть перенос, то есть если при сложении результат операции не помещается в приёмник. Тогда в качестве дополнительного бита переполнения используется бит флага CF в регистре флагов. Таким образом, в команде ADC выполняется следующее действие:

< операнд 1> = < операнд 1>+< операнд 2>+ CF (при CF=0 выполняется команда ADD)

Команда INC — инкрементирование - увеличение операнда на 1.

Формат команды INC < операнд >. В качестве единственного операнда, который увеличивается на 1, используется один из регистров общего назначения 8-ми или 16-ти разрядный; переменная в памяти размерностью в один байт или слово. Такую команду очень удобно использовать для организации циклов, для увеличения индексных или базовых регистров для доступа к последовательным ячейкам памяти при косвенной адресации. В отличие от ADD и ADC команда INC не изменяет флаг CF.

Команды вычитания

Аналогично командам сложения - команды вычитания:

SUB < операнд 1>,< операнд 2>

SBB < операнд 1>,< операнд 2>

DEC < операнд >

 

В команде SUB < операнд 1>,< операнд 2> из содержимого приемника вычитается содержимое источника и результат записывается в приемник, т.е. < операнд 1> = < операнд 1>-< операнд 2

В команде SBB дополнительно вычитается флаг переноса CF

< операнд 1> = < операнд 1>-< операнд 2>-CF

Аналогично командам сложения в качестве приемника можно использовать один из регистров общего назначения 8-ми или 16-ти разрядный или переменную в памяти размерностью в байт или слово.

В качестве источника — один из регистров общего назначения 8-ми или 16-ти разрядный, или переменную в памяти, а также константу размерностью в байт или слово.

В командах DEC — декрементирование - уменьшение операнда на 1 в качестве единственного операнда, который уменьшается на 1 можно использовать регистр общего назначения 8-ми или 16-ти разрядный или переменную в памяти размерностью в байт или слово.

Также удобно использовать эту команду для организации циклов, для уменьшения индексных или базовых регистров при косвенной адресации.

Флаг CF — не изменяется.

 

Команды умножения

В составе команд микропроцессора есть две команды умножения, которые можно применять для умножения целых чисел без знака (MUL) и со знаком (IMUL).

Формат этих команд

MUL <операнд>

IMUL <операнд>

В этих командах используется только один операнд, хотя в самой операции необходимы три операнды — два сомножителя и произведение. В команде MUL один сомножитель и произведение не указываются явно, местонахождение их фиксировано:

- при умножении байтов сомножитель берется из регистра AL; результат умножения, т.е. произведение, будет иметь размер слова и записывается в AX;

- при умножении слов — из регистра AX; результат умножения имеет размер двойного слова и записывается в два регистра — в регистр DX заносятся старшие цифры произведения, а в регистр AX — младшие цифры.

Если в результате умножения, произведение не столь велико и уменьшается в регистре AX, это можно определить по флагам CF=OF=0

Если CF=OF=1, то произведение занимает двойной формат (регистры DX и AX).

 

Команды деления

DIV — команда беззнакового деления

IDIV — команда знакового деления.

Формат команд:

DIV <операнд>

IDIV <операнд>

В качестве единственного операнда можно использовать любой 8-ми, 16-ти разрядный регистры общего назначения, а также можно использовать содержимое переменной в памяти размером в один байт или слово.

Операнд команды деления является делителем; делимое и результат операции деления — частное и остаток - помещаются в предопределенные регистры, зависящие от размерности операнда в команде.

Если операндом в команде является 8-ми разрядный операнд, то делимое находится в регистре AX, частное будет записано в AL, остаток — в регистр AH

Если операндом в команде является 16-разрядный операнд, то делимое находится в паре регистров DX:AX (старшая часть делимого - в DX, младшая - в AX), частное будет записано в регистр AX, а остаток - в регистр - DX.

Если делитель равен 0 или результат является слишком большим и не помещается в отведенные для частного биты, то микропроцессор генерирует прерывание с номером 0.

При адресации операнда в памяти можно использовать прямую и все виды косвенной адресации.

Нельзя использовать непосредственную адресацию.

 




Поделиться с друзьями:


Дата добавления: 2014-11-09; Просмотров: 1283; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.