Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lb_4_ok.doc
Скачиваний:
16
Добавлен:
17.09.2019
Размер:
147.46 Кб
Скачать
    1. Арифметические команды в Ассемблере

В язык Ассемблера входят пять групп арифметических команд: команды преобразования типов, команды двоичной арифметики, десятичной арифметики, вспомогательные команды и прочие команды с арифметическим принципом действия. Далее рассмотрим команды двоичной арифметики.

Микропроцессор 80Х86 может работать как с числами со знаком, так и с числами без знака. Соответственно, если используются числа со знаком, то они могут быть или положительные или отрицательные. При этом под знак отводится самый старший разряд двоичного числа: 0положительное число; 1отрицательное. Поэтому диапазон значений двоичного числа зависит от его размера и трактовки старшего бита числа.

Таблица 4.3 – Диапазон значений двоичных чисел

Размерность поля

Целое без знака

Целое со знаком

Байт

0…255

-128…+127

Слово

0…65535

-32768…+32767

Двойное слово

0…4294967295

-2147483648…+2147483647

      1. ADD – целочисленное сложение

Команда ADD осуществляет сложение первого и второго операнда, при этом исходное значение первого операнда (dst - приёмника) теряется, замещаясь результатом сложения. Второй операнд (src –источник) не изменяется.

ADD dst, src; dst: = (dst) + (src).

В качестве первого операнда можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго – регистр (кроме сегментного), ячейку памяти или непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами и являться числами со знаком или без знака. Команда воздействует на флаги OF, SF, ZF, AF, PF и CF.

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

При операциях с числами со знаком нужно учитывать возможный перенос в старший значащий разряд, так как при этом может измениться знак результата. Для этих целей может помочь анализ флага переполнения OF, так как он устанавливается в 1, если происходит перенос в старший значащий разряд (в 7-ой или 15-ый) для положительных чисел или из старшего значащего разряда для отрицательных чисел.

    1. SUB – вычитание целых чисел

Команда SUB вычитает второй операнд из первого и помещает результат на место первого операнда, т.е.

SUB dst, src; ; dst: = (dst) - (src).

Операнды аналогичны команде целочисленного сложения. Команда воздействует на флаги OF, SF, ZF, AF, PF и CF.

    1. Команды inc и dec

Команда INC (инкремент) прибавляет 1 к операнду, в качестве которого можно указывать регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово:

INC op; op:= (op) + 1.

Не допускается использовать в качестве операнда непосредственное значение. Операнд интерпретируется как число без знака. Команда воздействует на флаги OF, SF, ZF, AF и PF. Команда не воздействует на флаг CF.

Команда DEC (декремент) аналогична команде INC, за исключением того, что она вычитает единицу из операнда:

DEC op; op:= (op) – 1.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]