290 likes | 387 Views
3 .2 指令系统. 按功能分为: 数据传送指令 算术运算指令 位处理指令(逻辑运算指令) 串操作指令 控制转移指令 处理机控制指令. 三、位处理指令 — 逻辑运算指令. 内存. AX , BX CX , DX SI , DI B P , SP. AH,AL CH , CL DH , DL BH , BL. 立即数. * * * * * * * * AND 1 1 1 1 1 1 0 0 * * * * * * 0 0. 例:屏蔽 AL 的0、1两位
E N D
3.2 指令系统 • 按功能分为: • 数据传送指令 • 算术运算指令 • 位处理指令(逻辑运算指令) • 串操作指令 • 控制转移指令 • 处理机控制指令
三、位处理指令—逻辑运算指令 内存 AX,BX CX,DX SI,DI BP,SP AH,AL CH,CL DH,DL BH,BL 立即数 * * * * * * * * AND 1 1 1 1 1 1 0 0 * * * * * * 0 0 例:屏蔽AL的0、1两位 AND AL, 0FCH 1、AND 指令 格式:AND dest, src 功能: (dest) (dest) (src)例如: AND AX,BX AND CL,[SI] AND CL,AL AND DX,00FFH • 影响标志位 SF ZF PF • CF OF=0 0 • AF 无定义
三、位处理指令—逻辑运算指令 内存 AX,BX CX,DX SI,DI BP,SP AH,AL CH,CL DH,DL BH,BL 立即数 * * * * * * * * OR 0 0 1 0 0 0 0 0 * * 1 * * * * * 例:置AL的第5位为1 OR AL, 20H 2、OR 指令 格式:OR dest, src 功能: (dest) (dest) (src)例如: OR AX,BX OR CL,[SI] OR CL,AL OR DX,00FFH • 影响标志位 SF ZF PF • CF OF=0 0 • AF 无定义
三、位处理指令—逻辑运算指令 内存 AX,BX CX,DX SI,DI BP,SP AH,AL CH,CL DH,DL BH,BL 立即数 * * * * * * * * XOR 0 0 0 0 0 0 1 1 * * * * * * * * 例:对AL的0、1位求反 XOR AL, 3 3、XOR 指令 格式:XORdest, src 功能: (dest) (dest) (src)例如: XOR AX,BX XOR CL,[SI] XOR CL,AL XOR DX,00FFH • 影响标志位 SF ZF PF • CF OF=0 0 • AF 无定义
三、位处理指令—逻辑运算指令 内存 AX,BX CX,DX SI,DI BP,SP AH,AL CH,CL DH,DL BH,BL 立即数 * * * * * * * * TEST 1 0 0 0 0 0 0 1 *0 0 0 0 0 0 * 例:测试某些位是0是1 TEST AL, 81H JZ EVEN 4、TEST 指令 格式:TESTdest, src 功能: (dest) (src) 例如: TEST AX,BX TEST [SI],CL TEST CL,0101 0101B TEST SI,00FFH • 影响标志位 SF ZF PF • CF OF=0 0 • AF 无定义
三、位处理指令—逻辑运算指令 内存 AX,BX CX,DX SI,DI BP,SP AH,AL CH,CL DH,DL BH,BL 功能: (dest) (dest) 5、NOT 指令 格式:NOTdest 例如: NOT AX NOT DH NOT SI NOT BYTE PTR [SI] • 不影响标志位 • DEST不能为立即数
三、位处理指令—移位运算指令 D7 D15 1 6、SHL 指令 格式:SHL dest,count D0 存放移位次数 0 CF CL 功能:逻辑左移 • SF、ZF、PF 根据移位结果设置 • CF = 移入的数值 • OF • AF无定义 • DEST不能为立即数 1 count=1时,最高位的值改变 0 count=1时,最高位的值不变 例如: SHL AX,1 MOV CL,4 SHL DH,CL
三、位处理指令—移位运算指令 1 7、SHR 指令 格式:SHR dest,count 存放移位次数 CL D7 D15 D0 0 功能:逻辑右移 CF • SF、ZF、PF 根据移位结果设置 • CF = 移入的数值 • OF • AF无定义 • DEST不能为立即数 1 count=1时,最高位的值改变 0 count=1时,最高位的值不变 例如: SHR SI,1 MOV CL,3 SHL BYTE PTR [BX],CL
三、位处理指令—移位运算指令 D7 D15 D0 0 CF 功能:算术左移 • SF、ZF、PF 根据移位结果设置 • CF = 移入的数值 • OF • AF无定义 • DEST不能为立即数 1 count=1时,最高位的值改变 0 count=1时,最高位的值不变 1 8、SAL 指令 格式:SAL dest,count 存放移位次数 CL 例如: SAL AX,1 MOV CL,4 SAL DH,CL
三、位处理指令—移位运算指令 1 9、SAR 指令 格式:SAR dest,count 存放移位次数 CL D7 D15 D0 CF 功能:算术右移 保持符号位不变 • SF、ZF、PF 根据移位结果设置 • CF = 移入的数值 • OF • AF无定义 • DEST不能为立即数 1 count=1时,最高位的值改变 0 count=1时,最高位的值不变 例如: SAR DI,1 MOV CL,3 SAR BP,CL
三、位处理指令—移位运算指令 1 10、ROL 指令 格式:ROL dest,count 存放移位次数 CL D7 D15 D0 功能:循环左移 CF • SF、ZF、PF 、AF不受影响。 • CF = 移入的数值 • OF • DEST不能为立即数 1 count=1时,最高位的值改变 0 count=1时,最高位的值不变 例如: ROL DI,1 MOV CL,3 ROL BYTE PTR [SI],CL
三、位处理指令—移位运算指令 1 11、ROR 指令 格式:ROR dest,count 存放移位次数 CL D7 D15 D0 功能:循环右移 CF • SF、ZF、PF 、AF不受影响。 • CF = 移入的数值 • OF • DEST不能为立即数 1 count=1时,最高位的值改变 0 count=1时,最高位的值不变 例如: ROR DI,1 MOV CL,3 ROR BYTE PTR [SI],CL
三、位处理指令—移位运算指令 1 12、RCL 指令 格式:RCL dest,count 存放移位次数 CL D7 D15 D0 功能:带进位循环左移 CF • SF、ZF、PF 、AF不受影响。 • CF = 移入的数值 • OF • DEST不能为立即数 1 count=1时,最高位的值改变 0 count=1时,最高位的值不变 例如: RCL DI,1 MOV CL,3 RCL BYTE PTR [SI],CL
三、位处理指令—移位运算指令 1 13、RCR 指令 格式:RCR dest,count 存放移位次数 CL D7 D15 D0 功能:带进位循环右移 CF • SF、ZF、PF 、AF不受影响。 • CF = 移入的数值 • OF • DEST不能为立即数 1 count=1时,最高位的值改变 0 count=1时,最高位的值不变 例如: RCR DI,1 MOV CL,3 RCR BYTE PTR [DI],CL
三、位处理指令 AX=0012H 0000 0000 0001 00010 (CL)=8 AX=1200H ROL AX, CL 0001 00010 0000 0000 例:(AX)= 0012H,(BX)= 0034H,把它们装配成(AX)= 1234H MOV CL, 8 ADD AX, BX ;AX=1234H (OR AX,BX) 例:(BX)=84F0H (1) (BX)为无符号数,求(BX)/2 SHR BX, 1 (2) (BX)为带符号数,求(BX)/2 SAR BX, 1
四、串操作指令—串传送指令 1、MOVS 指令 格式:MOVS dest,src 数据段中定义的一组数据→[DS:SI] 附加数据段中定义的缓冲区→[ES:DI] 数据段DS 附加段ES DF=0 (DI) (SI) (DI) (SI) (3)方向标志: DF=0 (CLD)时地址“ +”,DF=1 (STD)时地址“ -”。 DF=1 功能: (1)[ES:DI] ← [DS:SI] (2) MOVSB(字节操作):(SI)←(SI)±1, (DI)←(DI)±1 MOVSW (字操作): (SI)←(SI)±2, (DI)←(DI)±2 (4)REP与之配合。
四、串操作指令—前缀指令 操作: CX←CX-1当 CX≠0 重复执行串操作指令 CX=0 退出REP操作 操作: CX←CX-1当 操作: CX←CX-1当 CX≠0 且 ZF=1重复执行串操作指令 CX=0 或 ZF=0退出REP操作 CX≠0 且 ZF=0重复执行串操作指令 CX=0 或 ZF=1退出REP操作 3、REPZ/REPE 前缀指令 格式:REPZ 串操作指令 4、REPNZ/REPNE 前缀指令 格式:REPNZ 串操作指令 2、REP 前缀指令 格式:REP 串操作指令 例 REP MOVSB
四、串操作指令—前缀指令 • 执行REP MOVS之前,应先做好: • (1)源串首地址(末地址)→ SI • (2)目的串首地址(末地址)→ DI • (3)串长度 → CX • (4)建立方向标志(CLD使DF=0,STD使DF=1) 数据段DS 附加段ES DF=0 地址增量 (DI) (SI) (DI) (SI) • 例:MOVSB ;ES: [DI] ← DS: [SI]完成一个字节传送 例:LDS SI, 源串首地址 LES DI, 目的串首地址 MOV CX, 串长度 CLD REP MOVSB ;将数据段中的整串数据传送到附加段中。 源串(数据段)→ 目的串(附加段)
四、串操作指令—串比较指令 5、CMPS 指令 格式:CMPS dest,src 数据段中定义的一组数据→[DS:SI] 附加数据段中定义的一组数据→[ES:DI] 数据段DS 附加段ES DF=0 (DI) (SI) CF SF ZF AF OF (DI) (SI) 功能: (1)[ES:DI] - [DS:SI],不保存结果,影响标志位同SUB。 (2) CMPSB(字节操作):(SI)←(SI)±1, (DI)←(DI)±1 CMPSW (字操作): (SI)←(SI)±2, (DI)←(DI)±2 (3)方向标志: DF=0(CLD)时地址“ +”,DF=1(STD)时地址“ -”。 (4)REPZ / REPE、REPNZ / REPNE与之配合。
四、串操作指令—串传送指令 6、STOS 指令 格式:STOS dest 附加数据段中定义的缓冲区→[ES:DI] 附加段ES 地址增量 (DI) 以一串相同的数据初始化附加数据段中一串数据 AX(AL) (DI) DF=1 功能: (1)[ES:DI] ←AL(AX),不影响标志位。 (2) STOS B(字节操作): (DI)←(DI)±1 STOSW (字操作): (DI)←(DI)±2 (3)方向标志: DF=0(CLD)时地址“ +”,DF=1(STD)时地址“ -”。 (4)REP与之配合。
四、串操作指令—串传送指令 7、LODS 指令 格式:LODS src 数据段中定义的一组数据→[DS:SI] 数据段DS 地址增量 (SI) 从数据串取数到AX或AL中。 AX(AL) (SI) DF=1 功能: (1) AL(AX) ← [DS:SI] ,不影响标志位。 (2) LODSB(字节操作):(SI)←(SI)±1 LODSW (字操作): (SI)←(SI)±2, (3)方向标志: DF=0(CLD)时地址“ +”,DF=1(STD)时地址“ -”。 (4)可与REP配合,但一般不与REP联用
四、串操作指令—串搜索指令 8、SCAS 指令 格式:SCAS dest 附加数据段中定义的缓冲区→[ES:DI] 附加段ES 地址增量 (DI) 搜索附加段数据串中与AL相同(不相同)的数据 AX(AL) (DI) DF=1 功能: (1) AL(AX) -[ES:DI] ,影响标志位。 (2) SCASB(字节操作): (DI)←(DI)±1 SCASW (字操作): (DI)←(DI)±2 (3)方向标志: DF=0(CLD)时地址“ +”,DF=1(STD)时地址“ -”。 (4)REPZ / REPE、REPNZ / REPNE 与之配合。
第 三 章 习 题 课 P128 3.2题 设, DS=1000H; SS = 2000H, AX = 1A2BH, BX = 1200H, CX = 339AH, BP =1200H,SP = 1352H, SI= 1354H, (11350H) =0A5H, (11351H) = 3CH, (11352H) =OFFH,(11353H) = 26H, (11354H) = 52H, (11355H) = 0E7H, (126A4H) = 9DH,(126A5H) = 16H, (21350H) = 88H, (21351H) = 51H. 下列各指令都在此环境下执行,在下列各小题的空格中填人相应各指令执行结果。 (1) MOV AX, 1352H AX = 1352H (2) MOV AX, [1352H] AX =26FFH (3) MOV 0150H[BX] ,CH PA1= DS*16+BX+150H=10000H+1200H+150H=11350H (11350H) = 33H (11351H)= 3CH
第 三 章 习 题 课 P128 3.2题 设, DS=1000H; SS = 2000H, AX = 1A2BH, BX = 1200H, CX = 339AH, BP =1200H,SP = 1352H, SI= 1354H, (11350H) =0A5H, (11351H) = 3CH, (11352H) =OFFH,(11353H) = 26H, (11354H) = 52H, (11355H) = 0E7H, (126A4H) = 9DH,(126A5H) = 16H, (21350H) = 88H, (21351H) = 51H. 下列各指令都在此环境下执行,在下列各小题的空格中填人相应各指令执行结果。 (4) Mov AX,0150H[BP] PA= SS*16+BP+150H=20000H+1200H+150H=21350H (21350H) 送AX=5188H AX =5188H (5) POP AX PA= SS*16+SP=20000H+1352H=21352H 栈顶为21352H,将其送入AX.该单元未知为XXXXH AX =xxxxH SP =1354H
第 三 章 习 题 课 E 7 5 2 H + 3 3 9 A H 1 1 A E C H 1 P128 3.2题 设, DS=1000H; SS = 2000H, AX = 1A2BH, BX = 1200H, CX = 339AH, BP =1200H,SP = 1352H, SI= 1354H, (11350H) =0A5H, (11351H) = 3CH, (11352H) =OFFH,(11353H) = 26H, (11354H) = 52H, (11355H) = 0E7H, (126A4H) = 9DH,(126A5H) = 16H, (21350H) = 88H, (21351H) = 51H. 下列各指令都在此环境下执行,在下列各小题的空格中填人相应各指令执行结果。 (6) ADD [SI] ,CX PA1= DS*16+SI=10000H+1354H=11354H (11354H)=52H (11355H)=E7H E752H+339AH=1AEC H ; CF=1 (11355H) =1AH ( 11354H) =ECH SF=0 ZF =0 , PF = , CF =1 , OF =0
第 三 章 习 题 课 P128 3.2题 设, DS=1000H; SS = 2000H, AX = 1A2BH, BX = 1200H, CX = 339AH, BP =1200H,SP = 1352H, SI= 1354H, (11350H) =0A5H, (11351H) = 3CH, (11352H) =OFFH,(11353H) = 26H, (11354H) = 52H, (11355H) = 0E7H, (126A4H) = 9DH,(126A5H) = 16H, (21350H) = 88H, (21351H) = 51H. 下列各指令都在此环境下执行,在下列各小题的空格中填人相应各指令执行结果。 (7) SUB BH,0l50H[BX] [SI] PA=DS*16+BX+SI+150H =10000H+1200H+1354H+150H=126A4H (126A4H)=9DH BH=12H 12H-9DH=75H SF=0 ZF =0 , PF = 0 , CF =1 , OF =0
第 三 章 习 题 课 CF 1010 0101B=A5H CF=1 11010010B=D2H P128 3.2题 设, DS=1000H; SS = 2000H, AX = 1A2BH, BX = 1200H, CX = 339AH, BP =1200H,SP = 1352H, SI= 1354H, (11350H) =0A5H, (11351H) = 3CH, (11352H) =OFFH,(11353H) = 26H, (11354H) = 52H, (11355H) = 0E7H, (126A4H) = 9DH,(126A5H) = 16H, (21350H) = 88H, (21351H) = 51H. 下列各指令都在此环境下执行,在下列各小题的空格中填人相应各指令执行结果。 (10) SAR BYTE PTR 0150H[ BX], 1 PA=10000H+1200H+150H=11350H (11350H)=0A5H=1010 0101B (11350H)=D2H CF =1 OF =0
第 三 章 习 题 课 P128 3.2题 设, DS=1000H; SS = 2000H, AX = 1A2BH, BX = 1200H, CX = 339AH, BP =1200H,SP = 1352H, SI= 1354H, (11350H) =0A5H, (11351H) = 3CH, (11352H) =OFFH,(11353H) = 26H, (11354H) = 52H, (11355H) = 0E7H, (126A4H) = 9DH,(126A5H) = 16H, (21350H) = 88H, (21351H) = 51H. 下列各指令都在此环境下执行,在下列各小题的空格中填人相应各指令执行结果。 (11) SAL BYTE PTR 0150H[BX],1 PA=10000H+1200H+150H=11350H (11350H)=0A5H=1010 0101B 一次移位时最高位不发变化时OF=0 ,最高位发生变化OF=1 SAL 010 0 1010B=4AH CF =1 (11350H)=4AH ,CF =1 ,OF=1
课后作业: • P128 3.2 (10) (11) • P129 3.4 (3)(4)