3.1.2
3.1.2
算术运算指令
算术运算指令
1
1
、加法运算指令
、加法运算指令
ADD DEST , SRC ; DEST=DEST+SRC
ADC DEST , SRC ; DEST=DEST+SRC+CF
INC DEST ; DEST=DEST+1
1 )目的操作数、源操作数类型要匹配,
2 )源操作数可以是 REG/MEM/IMM
3 )目的操作只能是 REG/MEM ,不能是 IMM 和 SEG
4 )按正常规则影响标志位( INC 不影响 CF 位)
所有的算术运算指令的运算都是按二进制数的规则进行的。
加法指令举例
加法指令举例
设有两个
设有两个
32
32
位数
位数
3245F897H
3245F897H
、
、
12348000H
12348000H
分别
分别
存放于
存放于
DX
DX
:
:
AX
AX
与
与
CX
CX
:
:
BX
BX
组合中,即:
组合中,即:
DX=3245H
DX=3245H
,
,
AX=0F897H
AX=0F897H
CX=1234H
CX=1234H
,
,
BX=8000H
BX=8000H
要实现这两数相加,可用:
要实现这两数相加,可用:
ADD AX
ADD AX
,
,
BX
BX
ADC DX
ADC DX
,
,
CX
CX
0F897H
+ 8000H
AX= 7897H CF=1
3245H
+ 1234H
DX= 447AH CF=0
最后的结果应是: DX : AX=447A7897H
2
2
、减法
、减法
一般形式: 按二进制数运算规则影响标志寄存器
一般形式: 按二进制数运算规则影响标志寄存器
SUB DEST
SUB DEST
,
,
SRC
SRC
;
;
DEST=DEST-SRC
DEST=DEST-SRC
SBB DEST
SBB DEST
,
,
SRC
SRC
;
;
DEST=DEST-SRC-CF
DEST=DEST-SRC-CF
CMP DEST
CMP DEST
,
,
SRC
SRC
;
;
DEST-SRC
DEST-SRC
,不返回结果,仅影响标志位
,不返回结果,仅影响标志位
DEC DEST
DEC DEST
;
;
DEST=DEST-1
DEST=DEST-1
,不影响
,不影响
CF
CF
位
位
NEG DEST
NEG DEST
;
;
DEST=0-DEST
DEST=0-DEST
求相反数
求相反数
;求反(符号位也求反)再加
;求反(符号位也求反)再加
1
1
语法格式:
语法格式:
SUB REG/MEM
SUB REG/MEM
,
,
REG/MEM/IMM
REG/MEM/IMM
SBB REG/MEM
SBB REG/MEM
,
,
REG/MEM/IMM
REG/MEM/IMM
CMP REG/MEM
CMP REG/MEM
,
,
REG/MEM/IMM
REG/MEM/IMM
DEC REG/MEM
DEC REG/MEM
NEG REG/MEM
NEG REG/MEM
与减法有关的五条指令的说明
与减法有关的五条指令的说明
•
凡使用两个操作数的指令,操作数的类型要匹
凡使用两个操作数的指令,操作数的类型要匹
配,且不能同为内存操作数。
配,且不能同为内存操作数。
•
若
若
CF=0
CF=0
时,执行
时,执行
SBB
SBB
与执行
与执行
SUB
SUB
结果相同。
结果相同。
•
CMP
CMP
指令与
指令与
SUB
SUB
的不同点是,不将运算结果
的不同点是,不将运算结果
送目的操作数
送目的操作数
DEST
DEST
。往往用于产生分支条件
。往往用于产生分支条件
.
.
•
NEG
NEG
指令主要用于求一个以补码表示的负数的
指令主要用于求一个以补码表示的负数的
绝对值,或求任一个数的相反数(
绝对值,或求任一个数的相反数(
0-DEST
0-DEST
),
),
其运算过程为对
其运算过程为对
DEST
DEST
求反(符号位也求反)
求反(符号位也求反)
而后再加
而后再加
1
1
。
。
•
若要判断
若要判断
NEG
NEG
指令执行后的
指令执行后的
CF
CF
位,只要对
位,只要对
•
0-DEST
0-DEST
这个进行判断即可,如
这个进行判断即可,如
DEST=0
DEST=0
,则不要
,则不要
借位,
借位,
CF=0
CF=0
,否则都不够减,
,否则都不够减,
CF=1
CF=1
•
若要判断
若要判断
NEG
NEG
指令执行后的
指令执行后的
OF
OF
位,则只有在
位,则只有在
D
D
EST=-128
EST=-128
(字节型数据)或
(字节型数据)或
-32768
-32768
(字类型)
(字类型)
时,
时,
OF=1
OF=1
,其它情况
,其它情况
OF=0
OF=0
。
。
可以这样理解:
可以这样理解:
-128
-128
(字节类型)或
(字节类型)或
-32768
-32768
的
的
相反数,超出了
相反数,超出了
8
8
位或
位或
16
16
位的操作数据所能表示
位的操作数据所能表示
的有符号数的数据范围,所以溢出,而
的有符号数的数据范围,所以溢出,而
DEST
DEST
为
为
其它的任何数据时,都不可能超出我们规定的数
其它的任何数据时,都不可能超出我们规定的数
据范围。
据范围。
9 。 22 一班
评论0