Последний уровень раздела предыдущего изложения   Текущий уровень изложения предыдущего раздела   Текущий уровень изложения следующего раздела   Первый уровень изложения следующего раздела   Уровень: Глоссарии:


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



1. ADD DST, SRC; сложить содержимое SRC и DST и результат переслать в DST.



   add al, [membyte]; membyte однобайтовая ячейка памяти



   add [memword], dx; memword двухбайтовая ячейка памяти



   add ch,10001010b;



2. INC DST; увеличить (DST) на 1 (инкремент (DST)).



    inc si; (SI) <-- (SI) + 1.     inc count; (count) <-- (count) + 1.



3. SUB DST, SRC; вычесть (SRC) из (DST) и результат поместить в DST.



4. DEC DST; декремент (DST).



5. CMP DST, SRC; сравнить содержимое DST и SRC. Эта команда выполняет вычитание (SRC) из (DST)   но разность не помещает в DST и по результату операции воздействует на флаги.



    условие флаги     OF SF ZF CF     DST > SRC 0/1 0 0 0     DST = SRC 0 0 1 0     DST < SRC 0/1 1 0 1



0/1 - означает, что флаг может быть равен 0 или 1 в зависимости от значений операндов. Флаги OF и SF имеют смысл при операциях со знаковыми числами, CF для беззнаковых чисел. Флаг переполнения OF устанавливается в 1, если в результате операции сложения или вычитания значения переноса в старшиий двоичный разряд и из старшего двоичного разряда не совпадают. По другому определению OF принимает значение 1, если результат превышает диапазон представления соответствующих чисел. Пусть DST > SRC и оба являются однобайтовыми числами, тогда:



DST: 1. (+127) 2. (+127) SRC: - (+2) - (-2) ------- ------- (+125) (OF)=0 (+129)? (OF)=1



Во втором примере результат превышает диапазон: -128 <= x < = +127. Флаг знака SF устанавливается в '1', если старший бит результата операции равен 1, т.е. при отрицательном результате. В противном случае сбрасывается. Флаг нуля ZF устанавливается в '1' при нулевом результате (!), иначе сбрасывается. Флаг переноса CF = 1, если есть перенос из старшего разряда при сложении или есть заем в младший разряд при вычитании. Иначе флаг сбрасывается. Для первого примера SF = ZF = CF = 0, для второго: SF = 1, ZF = CF = 0.