Арифметические операции в языке Ассемблера IBM PC
Процессор реализует в нескольких форматах четыре базовые арифметические операции. Операции выполняются над 8- и 16-битовыми беззнаковыми и знаковыми операндами. В языке Ассемблера так же предусмотрены команды для работы с десятичными числами.
Арифметические команды данного языка программирования:
Различие между беззнаковыми и знаковыми числами заключается в способах объяснения двоичных наборов.
Знаковые числа описаны в дополнительном коде с использованием самого левого бита для представления знака. Беззнаковыми числами – называют обычные двоичные числа, у которых все биты являются значащими.
Большинство арифметических команд сбрасывают или устанавливают шесть флагов состояния, которые показывают определенные свойства результата:
Перечисленные выше арифметические операции выполняются над числами в двоичном формате. Данный формат удобен в том случае, если данные определены в самой программе.
Практически во всех случаях исходные данные вводятся программой с клавиатуры или из файла в десятичном формате в виде ASCII-символов. Данные поступают в ЭВМ, как правило, в неупакованном формате, т.е. каждый байт содержит только одну цифру.
Примером неупакованного десятичного формата служит ASCII-код, в котором каждый символ представляется одним байтом.
Представление цифр в ASCII – коде:
1 – 31Н 6 — 36Н
2 — 32Н 7 — 37Н
3 – ЗЗН 8 — 38Н
4 — 34Н 9 — 39Н
5 — 35Н 0 — ЗОН
Арифметические команды данного языка программирования:
- 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 комментариев