1 / 20

3 .2 指令系统

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 ADD CL , [SI]

wyatt-stone
Download Presentation

3 .2 指令系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3.2 指令系统 • 按功能分为: • 数据传送指令 • 算术运算指令 • 位处理指令(逻辑运算指令) • 串操作指令 • 控制转移指令 • 处理机控制指令

  2. 二、算术运算指令—加法指令 内存 AX,BX CX,DX SI,DI BP,SP AH,AL CH,CL DH,DL BH,BL 立即数 DS,ES,SS 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 • 影响标志位OF SF ZF AF CF

  3. 1 结果为负 0 否则 1 结果为0 0 否则 1 和的最高位向高位有进位 0 否则 1 两个操作数符号相同,而结果符号与之相反 0 否则 SF= ZF= CF= OF= ADD 指令对标志位 SF ZF CF OF CF——表示无符号数相加的溢出。 OF——表示带符号数相加的溢出。

  4. 无符号数溢出 有符号数和无符号数都不溢出 有符号数溢出 有符号数和无符号数都溢出 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=最高位进位 异或 次高位进位

  5. 二、算术运算指令—加法指令 内存 AX,BX CX,DX SI,DI BP,SP AH,AL CH,CL DH,DL BH,BL 立即数 DS,ES,SS 2、ADC 指令 格式:ADC dest, src 功能: (dest) (dest)+(src)+CF 例如: ADC AX,BX ADC CL,[SI] ADC CL,AL ADC DX,ES • ADD、ADC影响标志位 • OF SF ZF AF CF • INC 不影响CF •  INC 3 3、INC 指令 格式:INC dest 功能: (dest) (dest) + 1 例如:INC CX

  6. F 3 6 5 H AX (1)执行后 (AX)= 0D389H CF=1 OF=0 SF=1 ZF=0 0 0 0 2 H DX E 0 2 4 H CX ADD 0 0 0 5 H BX CF←1 D 3 8 9 H AX ADC CF=1 (2) 执行后 (DX)= 0008H CF=0 OF=0 SF=0 ZF=0 CF←0 0 0 0 8 H DX 例:双精度数的加法 (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) ADD AX, CX (2) ADC DX, BX DEBUG演示

  7. 二、算术运算指令—减法指令 内存 AX,BX CX,DX SI,DI BP,SP AH,AL CH,CL DH,DL BH,BL 立即数 DS,ES,SS 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 • 影响标志位OF SF ZF AF CF

  8. 二、算术运算指令—减法指令 内存 AX,BX CX,DX SI,DI BP,SP AH,AL CH,CL DH,DL BH,BL 立即数 DS,ES,SS 5、SBB 指令 格式:SBBdest, src 功能:(dest) (dest) -(src) - CF 例如: SBB AX,BX SBB CL,[SI] SBB CL,56H 6、DEC 指令 格式:DECdest 功能: (dest) (dest) - 1 例如: DEC CX DEC CL • SUB、SBB 影响标志位 • OF SF ZF AF CF • DEC 不影响CF •  DEC 3

  9. 二、算术运算指令—减法指令 内存 AX,BX CX,DX SI,DI BP,SP AH,AL CH,LD DH,DL BH,BL 立即数 DS,ES,SS (dest) 8、NEG 指令 格式:DEG dest 功能: (dest) + 1 例如: NEG CL NEG DX NEG SI 7、CMP 指令 格式:CMPdest, src 功能:(dest) -(src) 例如: CMP AX,BX CMP CL,[SI] CMP CL,56H • CMP 影响标志位不保存结果 • NEG 不影响标志位 •  NEG 3

  10. 二、算术运算指令—加法调整指令 >9 AL←AL+06H AL低4位 AF=1 功能:对AL中的压缩BCD码加法结果进行修正。 >9 AL←AL+60H AL高4位 CF=1 0001 1001 0001 1001 +06H修正 +0000 1000 例如19+8=27的BCD加法 +0000 0110 0010 0001 0010 0111 AF=1 27BCD • OF不确定,其余标志位随运算结果而变。 • 只能在ADD或ADC之后出现。 9、DAA 指令 格式:必须紧跟在ADD、ADC之后。

  11. 二、算术运算指令—加法调整指令 运算: 1834H+2789H=40BDH DAA (4623)BCD 4623H (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演示

  12. 二、算术运算指令—减法调整指令 >9 AL←AL﹣06H AL低4位 AF=1 功能:对AL中的压缩BCD码减法结果进行修正。 >9 AL←AL﹣60H AL高4位 CF=1 1010 1011 0011 0100 ﹣ 06H修正 ﹣ 0110 0110 ﹣ 1000 1001 例如34 ﹣ 89=45的BCD减法 0100 0101 1010 1011 CF=1 AF=1 45BCD • OF不确定,其余标志位随运算结果而变。 • 只能在SUB或SBB之后出现。 10、DAS 指令 格式:必须紧跟在SUB、SBB之后。

  13. 二、算术运算指令—乘法指令 11、MUL 指令 格式:MUL src 字节AL=dest AX ←AL*SRC 功能: 字AX=dest DX:AX ←AX*SRC 12、IMUL 指令 格式:IMUL src 功能:IMUL同MUL只是针对有符号数。 • AL(AX)为隐含的乘数寄存器 • AX(DX:AX)为隐含的乘积寄存器 • SRC不能为立即数。 • 除CF和OF,对条件标志位无定义

  14. 二、算术运算指令—乘法指令 • 乘法指令对标志位影响: 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中

  15. 二、算术运算指令—除法指令 13、DIV 指令 格式:DIV src 商: AL ←AX / SRC 余数: AH  AX / SRC 字节除:被除数 AX 功能: 商: AX ←DX:AX / SRC 余数: DX  DX:AX / SRC 14、IDIV 指令 格式:IDIV src 字除:被除数 DX:AX 功能:IDIV同DIV只是针对有符号数。 • AX(DX:AX)隐含的被除数寄存器。 • AL(AX)隐含的商寄存器。 • AH(DX)隐含的余数寄存器。 • SRC不能为立即数。 • 对所有条件标志位均无定义。 • 商溢出错时,产生除法出错中断。

  16. 二、算术运算指令—符号扩展指令 15、CBW 指令 格式:CBW 功能: 若(AL)的最高有效位为0,则(AH)= 00H 若(AL)的最高有效位为1,则(AH)= 0FFH 16、CWD 指令 格式:CWD 功能: 若(AX)的最高有效位为0,则(DX)= 0000H 若(AX)的最高有效位为1,则(DX)= 0FFFFH • 无操作数指令 • 隐含对AL或AX进行符号扩展 • 不影响条件标志位。 例:(AX)=0BA45H=1011 1010 0100 0101B CBW ; (AX)=0045H CWD ; (DX)=0FFFFH (AX)=0BA45H DEBUG演示

  17. 第 三 章 习 题 课 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. 在以上给出的环境下,试问下列指令或指令段执行后的结果如何? (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=0056H PA=DS*16+[BX+2H]=091D0H+0056H+2H= 09228H (AX)=([09228H])=1E40H

  18. 第 三 章 习 题 课 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 debug x31入口137H

  19. 第 三 章 习 题 课 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. 在以上给出的环境下,试问下列指令或指令段执行后的结果如何? (5) XCHG CX, [BX + 32H] XCHG [ BX + 2OH] [SI] ,AX PA1= DS*16+BX+32H =091D0H+0024H+0032H=09226H 与CX进行交换 (CX)=00F6H ([09226H])=(CX)=5678H PA2= DS*16+BX+SI+20H = 091D0H+0024H+0012H+0020H =09226H 与AX进行交换 (AX)=5678H ([09226H])=1234H

  20. 课后作业: • P128 3.2 (6) (7) (8) (9) • P128 3.4 (1)(2)

More Related