Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИЯ5.DOC
Скачиваний:
2
Добавлен:
22.07.2019
Размер:
53.25 Кб
Скачать

6

Лекция №5

Математические функции

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

ADD Целочисленное сложение

Команда ADD осуществляет сложение первого и второго операндов. Исходное значение первого операнда (приемника) теряется, замещаясь результатом сложения. Второй операнд не изменяется. В качестве первого операнда можно указывать ре­гистр (кроме сегментного) или ячейку памяти, в качестве вто­рого - регистр (кроме сегментного), ячейку памяти или непо­средственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака.

Пример

mov BX, lFFEh

mov СХ.3

add BX,CX ;BX=2001h

ADC Целочисленное сложение с переносом

Команда ADC осуществляет сложение первого и второго опе­рандов, прибавляя к результату значение флага переноса CF. Исходное значение первого операнда (приемника) теряется, замещаясь результатом сложения. Второй операнд не изменяется. В качестве первого операнда можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго - регистр (кроме сегментного), ячейку памяти или непосредственное зна­чение, однако не допускается определять оба операнда одно­временно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Команда ADC обычно используется для сложения 32-разрядных чисел.

Пример 1

mov AX,1125h

adc AX,2C25h ;AX=3D4Bh, если CF был = 1

Пример 2

В полях данных:

numtow dw OFFFFh ;Младшая часть 2-го слагаемого numhigh dw 0005h ;Старшая часть 2-го слагаемого

;Число 5FFFFh=393215

В программном сегменте:

mov AX,0005h ;Младшая часть 1-го слагаемого

mov BX,0002h ;Старшая часть 1-го слагаемого

;Число 20005h=131077

add AX.numlow ;Сложение младших частей. АХ=4,CF=1

adc BX.numhigh ;Сложение старших частей с переносом.

;BX:AX=0008:0004h.

;Число 80004h=524292

INC Инкремент (увеличение на 1)

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

Пример 1

mov AX,0563h

Inc AX ;AX=0564h

Пример 2

mov BH,15h

Inc BH ;BH=16h

Пример 3

mov AX.ASFFh

Inc AL ;AX=A500h

Inc AH ;AX=A600h

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

SUB Вычитание целых чисел

Команда SUB вычитает второй операнд (источник) из перво­го (приемника) и помещает результат на место первого опе­ранда. Исходное значение первого операнда (уменьшаемое) теряется. Таким образом, если команду вычитания записать в общем виде

sub операнд_1, операнд_2

то ее действие можно условно изобразить следующим образом:

операнд_1 - операнд_2 -> операнд_1

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

Примеры

sub CX,5 ; Выполняется действие СХ-5->СХ

sub DH,DL ; Выполняется действие DH-DL->DH

sub AX,mem ; Выполняется действие АХ-(mem)->АХ

sub byte ptr men,DL ; Выполняется действие(mem)-DL->mem

sub tab1e[BX],'O' ; Выполняется действие (table[BX])-30h

; -> table[BX]

SBB Целочисленное вычитание с займом

Команда SBB вычитает второй операнд (источник) из перво­го (приемника). Результат замещает первый операнд, предыду­щее значение которого теряется. Если установлен флаг CF, из результата вычитается еще 1. Таким образом, если команду вычитания записать в общем виде

sbb операнд_1, операнд_2

то ее действие можно условно изобразить следующим образом:

операнд_1 - операнд_2 - CF -> операнд_1

В качестве первого операнда можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго -регистр (кроме сегментного), ячейку памяти или непосред­ственное значение, однако не допускается определять оба опе­ранда одновременно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Команда SBB обычно используется для вычитания 32-разрядных чисел.

Пример 1

mov AX,76A5h

sbb AX,76A3h ; АХ=-1, если CF был=1 ;АХ=2, если CF был=0

Пример 2

В полях данных:

numlow dw 000Ah ;Младшая часть вычитаемого

numhigh dw 000lh ;Старшая часть вычитаемого

;Число 1000Аh=65546

В программном сегменте:

mov АХ,0 ;Младшая часть уменьшаемого

mov DX,0002 ;Старшая часть уменьшаемого

;Число 20000h=131072

sub AX,num1ow ; Вычитание младших частей.

;AX=FFF6h, CF=1

sbb DX,numhigh ;Вычитание старших частей с займом.

;DX:AX=0000:FFF6h=65526

DEC Декремент (уменьшение на 1)

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

Пример 1

mov AX.OFFFFh

dec AX ;AX=FFFEh

Пример 2

mov CX, О

dec CX ;CX=FFFFh=-l

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