Арифметические операции в языке Ассемблера IBM PC

Процессор реализует в нескольких форматах четыре базовые арифметические операции. Операции выполняются над 8- и 16-битовыми беззнаковыми и знаковыми операндами. В языке Ассемблера так же предусмотрены команды для работы с десятичными числами.

Арифметические команды данного языка программирования:

  • ADC (сложить с переносом) приемник+источник+cf = приемник
  • INC (инкремент) приемник+1 = приемник
  • ADD (сложить) приемник+источник = приемник
  • SBB (вычесть с переносом) приемник-источник-cf = приемник
  • SUB (вычесть) приемник-источник = приемник
  • DEC (декремент) приемник-1 = приемник
  • NEG (изменить знак) -приемник = приемник
  • MUL (умножить без знака) АL*источник (8) = АХ
  • АХ*источник (16) = DX AX
  • IMUL (умножить со знаком) Команда MUL (при этом операнды знаковые)
  • DIV (разделить без знака) АХ/источник (8) = AL
  • DX, АХ/источник (16)= АХ
  • IDIV (разделить со знаком) Команда DIV (при этом операнды знаковые)

Различие между беззнаковыми и знаковыми числами заключается в способах объяснения двоичных наборов.

Знаковые числа описаны в дополнительном коде с использованием самого левого бита для представления знака. Беззнаковыми числами – называют обычные двоичные числа, у которых все биты являются значащими.

Большинство арифметических команд сбрасывают или устанавливают шесть флагов состояния, которые показывают определенные свойства результата:

  • флаг CF. Он вводится в том случае, если операция дала беззнаковый результат и он вне диапазона;
  • флаг OF. Данный флаг вводится в том случае, если в операции получился знаковый результат, который находится вне диапазона (знаковое переполнение);
  • флаг ZF. Этот флаг устанавливается, если результат операции равен u;
  • флаг SF. Он устанавливается в том случае, если старший бит итога операции содержит единицу, что соответствует получению отрицательного результата;
  • флаг PF. Данный флаг устанавливается в том случае, если итог операции включает в себя четное число единичных бит в младшем байте результата;
  • флаг AF. Этот флаг устанавливается в том случае, если в десятичных операциях требуется коррекция.

Перечисленные выше арифметические операции выполняются над числами в двоичном формате. Данный формат удобен в том случае, если данные определены в самой программе.

Практически во всех случаях исходные данные вводятся программой с клавиатуры или из файла в десятичном формате в виде ASCII-символов. Данные поступают в ЭВМ, как правило, в неупакованном формате, т.е. каждый байт содержит только одну цифру.

Примером неупакованного десятичного формата служит ASCII-код, в котором каждый символ представляется одним байтом.

Представление цифр в ASCII – коде:

1 – 31Н 6 — 36Н
2 — 32Н 7 — 37Н
3 – ЗЗН 8 — 38Н
4 — 34Н 9 — 39Н
5 — 35Н 0 — ЗОН

18 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.