3 .2 指令系统
DESCRIPTION
3 .2 指令系统. 按功能分为: 数据传送指令 算术运算指令 位处理指令(逻辑运算指令) 串操作指令 控制转移指令 处理机控制指令. 二、 算术运算指令— 加法指令. 内存. AX , BX CX , DX SI , DI B P , SP. AH,AL CH , CL DH , DL BH , BL. 立即数. DS , ES,SS. 1、 ADD 指令 格式: ADD dest , src 功能: ( dest) ( dest)+(src) 例如: ADD AX , BX ADDCL , [SI] - PowerPoint PPT PresentationTRANSCRIPT
二、算术运算指令—加法指令
1 、 ADD 指令
格式: ADD dest , src
功能: (dest) (dest)+(src)
例如:
ADD AX , BX
ADD CL , [SI]
ADD CL , AL
ADD DX , ES
ADD AL , 30H
ADD BYTE PTR [DI] , 12H
AX , BX
CX , DX
SI , DI
BP , SP
AH , AL
CH , CL
DH , DL
BH , BL
DS , ES ,SS
内存
立即数
•影响标志位 OF SF ZF AF CF
CF—— 表示无符号数相加的溢出。
OF—— 表示带符号数相加的溢出。
1 结果为负0 否则
SF=1 结果为 00 否则
ZF=
1 和的最高位向高位有进位0 否则
CF=
1 两个操作数符号相同,而结果符号与之相反0 否则
OF=
ADD 指令对标志位 SF ZF CF OF
无符号数溢出
0 0 0 0 0 1 1 1
+ 1 1 1 1 1 0 1 1
0 0 0 0 0 0 1 0
有: (+7)+(-5)=+2 OF=0
无: 7+251=2 CF=1
有符号数和无符号数都不溢出
0 0 0 0 0 1 0 0
+ 0 0 0 0 1 0 1 1
0 0 0 0 1 1 1 1
有: (+4)+(+11)=+15 OF=0
无: 4+11=15 CF=0
有符号数溢出
0 0 0 0 1 0 0 1
+ 0 1 1 1 1 1 0 0
1 0 0 0 0 1 0 1
有 :(+9)+(+124)=-123 OF=1
无 :9+124=133 CF=0
有符号数和无符号数都溢出
1 0 0 0 0 1 1 1
+ 1 1 1 1 0 1 0 1
0 1 1 1 1 1 0 0
有: (-121)+(-11)=+124 OF=1
无: 135+245=124 CF=1
n=8bit 带符号数 (-128~127) 无符号数 (0~255)
有符号数溢出 :OF= 最高位进位 异或 次高位进位
二、算术运算指令—加法指令
2 、 ADC 指令
格式: ADC dest , src
功能: (dest) (dest)+(src)+CF
例如:
ADC AX , BX
ADC CL , [SI]
ADC CL , AL
ADC DX , ES
AX , BX
CX , DX
SI , DI
BP , SP
AH , AL
CH , CL
DH , DL
BH , BL
DS , ES ,SS
内存
立即数
•ADD 、 ADC 影响标志位OF SF ZF AF CF •INC 不影响 CF INC 3
3 、 INC 指令
格式: INC dest
功能: (dest) (dest) + 1
例如: INC CX
例:双精度数的加法
(DX)= 0002H ( AX ) = 0F365H ( BX ) = 0005H ( CX ) = 0E024H
(DX):(AX)=0002H:F365H 与 (BX):(CX) =0005H:E024H 相加
即是: (DX):(AX) + (BX):(CX)= (DX):(AX)
2F365H+5E024H=8D389H
( 1 )执行后
( AX ) = 0D389H CF=1 OF=0
SF=1 ZF=0
AXF 3 6 5 H
CXE 0 2 4 HADD
AXD 3 8 9 HCF←1
指令序列 (1) ADD AX, CX
(2) ADC DX, BX
DX 0 0 0 2 H
BX 0 0 0 5 H
ADC
DX0 0 0 8 HCF←0
CF=1
( 2 ) 执行后
( DX ) = 0008H CF=0 OF=0
SF=0 ZF=0DEBUG演示
二、算术运算指令—减法指令
4 、 SUB 指令
格式: SUB dest , src
功能: (dest) (dest) - (src)
例如:
SUB AX , BX
SUB CL , [SI]
SUB DX , ES
SUB BP , 78H
SUB [SI] , BYTE PTR 64H
AX , BX
CX , DX
SI , DI
BP , SP
AH , AL
CH , CL
DH , DL
BH , BL
DS , ES ,SS
内存
立即数
•影响标志位 OF SF ZF AF CF
二、算术运算指令—减法指令
5 、 SBB 指令
格式: SBB dest , src
功能: (dest) (dest) - (src) -CF
例如:
SBB AX , BX
SBB CL , [SI]
SBB CL , 56H
AX , BX
CX , DX
SI , DI
BP , SP
AH , AL
CH , CL
DH , DL
BH , BL
DS , ES ,SS
内存
立即数
•SUB 、 SBB 影响标志位OF SF ZF AF CF •DEC 不影响 CF DEC 3
6 、 DEC 指令
格式: DEC dest
功能: (dest) (dest) - 1
例如: DEC CX
DEC CL
二、算术运算指令—减法指令
7 、 CMP 指令
格式: CMP dest , src
功能: (dest) - (src)
例如:
CMP AX , BX
CMP CL , [SI]
CMP CL , 56H
AX , BX
CX , DX
SI , DI
BP , SP
AH , AL
CH , LD
DH , DL
BH , BL
DS , ES ,SS
内存
立即数
•CMP 影响标志位不保存结果•NEG 不影响标志位 NEG 3
(dest)
8 、 NEG 指令
格式: DEG dest
功能: (dest) + 1
例如: NEG CL
NEG DX
NEG SI
二、算术运算指令—加法调整指令
9 、 DAA 指令
格 式 : 必 须 紧 跟 在ADD 、 ADC 之后。
•OF 不确定,其余标志位随运算结果而变。•只能在 ADD 或 ADC 之后出现。
AL 低 4位
> 9
AF=1
AL←AL+06H
AL 高 4位
> 9
CF=1
AL←AL+60H
功能:对 AL 中的压缩 BCD码加法结果进行修正。
例如 19+8=27 的 BCD 加法
0001 1001+0000 1000
0010 0001
AF=1
+06H修正
0001 1001+0000 0110
0010 0111
27BCD
二、算术运算指令—加法调整指令 (1834)BCD+ (2789)BCD=4623D
MOV AL , 34H ;( AL ) =34H
ADD AL , 89H ;( AL ) =34+89=BDH
DAA ;( AL ) =BDH+60H+06H=23H(AF=CF=1 )
MOV AH , AL ;( AH ) =23H
MOV AL , 18H ;( AL ) =18H
ADC AL , 27H ;( AL ) =18+27+1=40H
DAA ;( AL ) =40H+06H=46H ( AF=1 CF=0 )
XCHG AH , AL ; AX= (1834+2789=4623)BCD
DEBUG演示
运算 :
1834H+2789H=40BDHDAA
4623H (4623)BCD
二、算术运算指令—减法调整指令
10 、 DAS 指令
格式:必须紧跟在 SUB 、 SBB之后。
•OF 不确定,其余标志位随运算结果而变。•只能在 SUB 或 SBB 之后出现。
AL 低 4位
> 9
AF=1
AL←AL 06H﹣
AL 高 4位
> 9
CF=1
AL←AL 60H﹣
功能:对 AL 中的压缩 BCD码减法结果进行修正。
例如 34 ﹣ 89=45 的 BCD减法
0011 0100﹣ 1000 1001
1010 1011
AF=1
﹣ 06H修正
45BCD
CF=1
1010 1011﹣ 0110 0110
0100 0101
二、算术运算指令—乘法指令11 、 MUL 指令
格式: MUL src
功能:字节 AL=dest
字 AX=dest
AX ←AL*SRC
DX:AX ←AX*SRC
•AL(AX) 为隐含的乘数寄存器•AX(DX : AX) 为隐含的乘积寄存器•SRC 不能为立即数。•除 CF 和 OF ,对条件标志位无定义
12 、 IMUL 指令
格式: IMUL src
功能: IMUL 同 MUL 只是针对有符号数。
二、算术运算指令—乘法指令
00 乘积的高一半为零,无有效数据11 否则MUL 指令 : CF/OF =
00 乘积的高一半是符号扩展,无有效数据11 否则 IMUL 指令 : CF/OF =
•乘法指令对标志位影响:
例:MUL CL ;( AL ) * ( CL )积在 AX 中MUL SI ;( AX ) * ( SI )积在 DX : AX
中MUL AX ;( AX ) * ( AX )积在 DX :
AX 中
二、算术运算指令—除法指令
•AX(DX : AX) 隐含的被除数寄存器。•AL(AX) 隐含的商寄存器。•AH(DX) 隐含的余数寄存器。•SRC 不能为立即数。• 对所有条件标志位均无定义。•商溢出错时,产生除法出错中断。
13 、 DIV 指令
格式: DIV src
功能:
字节除:被除数 AX
字除:被除数 DX :AX
商: AL ←AX / SRC
余数: AH AX / SRC
商: AX ←DX : AX / SRC
余数: DX DX :AX / SRC
14 、 IDIV 指令
格式: IDIV src
功能: IDIV 同 DIV 只是针对有符号数。
二、算术运算指令—符号扩展指令 •无操作数指令•隐含对 AL 或 AX 进行符号扩展•不影响条件标志位。
15 、 CBW 指令
格式: CBW
功能: 若 (AL) 的最高有效位为 0 ,则 (AH)= 00H 若 (AL) 的最高有效位为 1 ,则 (AH)= 0FFH
16 、 CWD 指令
格式: CWD
功能: 若 (AX) 的最高有效位为 0 ,则 (DX)= 0000H 若 (AX) 的最高有效位为 1 ,则 (DX)= 0FFFFH
例: (AX)=0BA45H=1011 1010 0100 0101B
CBW ; (AX)=0045H
CWD ; (DX)=0FFFFH (AX)=0BA45H
DEBUG演示
第 三 章 习 题 课
(1) MOV CL, [ BX + 20H] [ SI];
PA=DS*16+[BX+SI+20H]=091DH*16+0024H+0012H+20H=09226H
( [09226H] ) = ( CL ) =F6H
(2) MOV [BP][DI], CX;
PA=SS*16+ ( [BP+DI] ) =1E4A0H+0024H+0032H=1E4F6H
( [1E4F6H] ) = ( CX ) =5678H
(3) LEA BX,[BX+20H][SI] MOV AX, [ BX + 2 ];(BX)= ( BX+SI+20H ) =0024H+0012H+20H=0056HPA=DS*16+[BX+2H]=091D0H+0056H+2H= 09228H(AX)= ([09228H])=1E40H
P128 3.1 题 已知 DS = 091DH, SS = 1E4AH, AX = 1234H, BX = 0024H, CX = 5678H, BP= 0024H, SI = 0012H, DI = 0032H, (09226H) = 00F6H, (09228H) =1E40H,(1E4F6H) = 091DH. 在以上给出的环境下,试问下列指令或指令段执行后的结果如何 ?
第 三 章 习 题 课
(4) LDS SI, [BX][DI]
MOV [ SI], BX;
PA1=DS*16+BX+DI=091D0H+0024H+0032H=09226H
将 PA 所在单元的双字送入 DS 、 SI
SI= ( [09226] ) =00F6H
DS= ( [09228H] ) =1E40H
PA2=DS*16+SI=1E400H+F6H=1E40F6H
(1E40F6H)=0024H
P128 3.1 题 已知 DS = 091DH, SS = 1E4AH, AX = 1234H, BX = 0024H, CX = 5678H, BP= 0024H, SI = 0012H, DI = 0032H, (09226H) = 00F6H, (09228H) =1E40H,(1E4F6H) = 091DH. 在以上给出的环境下,试问下列指令或指令段执行后的结果如何 ?
debug x31 137入口 H
第 三 章 习 题 课
(5) XCHG CX, [BX + 32H] XCHG [ BX + 2OH] [SI] ,AXPA1= DS*16+BX+32H =091D0H+0024H+0032H=09226H
与 CX 进行交换( CX ) =00F6H( [09226H] ) = ( CX ) =5678H
P128 3.1 题 已知 DS = 091DH, SS = 1E4AH, AX = 1234H, BX = 0024H, CX = 5678H, BP= 0024H, SI = 0012H, DI = 0032H, (09226H) = 00F6H, (09228H) =1E40H,(1E4F6H) = 091DH. 在以上给出的环境下,试问下列指令或指令段执行后的结果如何 ?
PA2= DS*16+BX+SI+20H = 091D0H+0024H+0012H+0020H =09226H
与 AX 进行交换
( AX ) =5678H
( [09226H] ) =1234H