Реферат: Разработка программы на Ассемблере
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.
ЛОГИЧЕСКИЕ КОМАНДЫ И КОМАНДЫ СДВИГА
1. AND DST, SRC; поразрядное логическое "И".
mov dh, 10101100b;
and dh, 0f0h;
в результате выполнения этих двух команд содержимое DH станет равно 10100000b.
2. OR DST, SRC; поразрядное логическое "ИЛИ".
or bx,dx;если (BX)=5F0Fh,а (DX)=7777h,то после операции
;(BX)=7F7Fh.
BX | 0101 1111 0000 1111 = 5F0F |
DX | 0111 0111 0111 0111 = 7777 |
BX (результат) | 0111 1111 0111 1111 = 7F7F |
3. XOR DST, SRC; поразрядное логическое "исключающее ИЛИ".
xor al,55h;если (AL)=5ah, то после операции (AL)=0fh.