3 .2 指令系统

17
3 2 指指指指指指指指数数 数数数 数数数数数数 数数数数数 数数数数数数数 () 数数数数数 数数数数数数 数数数数数数数

description

3 .2 指令系统. 按功能分为: 数据传送指令 算术运算指令 位处理指令(逻辑运算指令) 串操作指令 控制转移指令 处理机控制指令. 五、程序转移指令— 无条件转移和条件转移. Part1 JMP AA. 无条件转移: 转移发生不需要状态信息,执行到 JMP 处则发生转移。. 无条件转移指令. Part2. 转移跳过的地址. AA XXXX Part3. 下一条执行指令. 条件转移: 当条件满足是发生转移,否则顺序执行下一条指令。. Part1 JCC AA. 条件转移指令. XXXX Part2. 条件 成立?. No. - PowerPoint PPT Presentation

Transcript of 3 .2 指令系统

Page 1: 3 .2 指令系统

3 . 2 指令系统

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

Page 2: 3 .2 指令系统

五、程序转移指令—无条件转移和条件转移

无条件转移 :转移发生不需要状态信息,执行到 JMP处则发生转移。

Part1

JMP AA

Part2

AA XXXX

Part3

无条件转移指令

转移跳过的地址

下一条执行指令

条件转移 :当条件满足是发生转移,否则顺序执行下一条指令。

Part1

JCC AA

XXXX

Part2

AA XXX

Part3

条件转移指令

转移跳过的地址

下一条执行指令

条件成立?

No

Yes

Page 3: 3 .2 指令系统

五、程序转移指令—无条件转移

1 、 JMP 指令

格式: JMP dest

功能:无条件转移到操作数 (dest) 所指示的地址,不影响标志。 •段内转移 :

•直接转移 : JMP START (IP)←START

16 位立即数

NERA 标号例如 :

JMP 1234H

指令跳转到 CS:1234H 执行。

Part1

JMP1234H Part2

1234H XXX

Part3

CS : 0100H

跳过 1134H

CS : 1234H

Page 4: 3 .2 指令系统

五、程序转移指令—无条件转移

•段内转移:•直接短转移 :JMP SHORT START

SHORT START 为 8 位位移量(- 128 ~+ 127 )•执行操作: (IP)←(IP)+2± 位移量

例如 :

JMP 12H

指令跳转到 CS:(IP+2+12H) 执行。

Part1

JMP 12HPart2

XXXXX

Part3

CS :1220H12H+2H=14H

CS :1234H

JMP —12HPart1

Part2

Part3

XXXXX

CS :1234H

2H—12H=—10H

CS :1224H

例如 :

JMP - 12H

指令跳转到 CS:(IP+2 - 12H) 执行

Page 5: 3 .2 指令系统

五、程序转移指令—无条件转移

•执行操作: (IP)←DEST

•段内转移:•间接转移 : JMP DEST——DEST 为 16 寄存器或内存操作数

例如 : ( SI ) =0100H

JMP SI

指令跳转到 CS:0100H 执行。

例如 ,( BX ) =100H , DS:0100H=1234H

JMP [BX]

指令跳转到 CS:1234H 执行。

Part1

JMP [BX]

Part2

1234H XXX

Part3

CS : 0100H

跳过 1134H

CS : 1234H

12H

34H DS : 0100H

IP=1234H

Page 6: 3 .2 指令系统

例如 :

JMP 12345678H

指令跳转到 1234:5678H 执行

五、程序转移指令—无条件转移•段间转移:

32 位立即数•直接转移 : JMP DEST

(IP)←低 16 位

(CS)←高 16位

FAR 标号32内存操作数

例如: DI=200H

双字( DS:0200H)=12345678H

JMP DWORD PTR [DI]

指令执行:低位字: (IP)=5678H

高位字 :(CS)=1234H

Part1JMP DWORD

PTR [DI]

Part2

XXX

Part3

CS : 0100H

1234H :5678H

34H56H

DS : 0200H

IP=5678H

78H

12H CS=1234H

Page 7: 3 .2 指令系统

五、程序转移指令—条件转移

条件转移都是短转移,转移距离只能在( -128 ~ +127 )内完成。简单转移:条件是由标志寄存器中的标志的状态决定的转移。复杂转移:条件是由有有符号数和无符号数的大小决定的转移。•简单转移:

FR

JC 标号 CF=1 有进位则转移到标号所在地址JNC 标号 CF=0 无进位则转移到标号所在地址

CF

JZ 标号 ZF=1 结果为零则转移到标号所在地址 JNZ 标号 ZF=0 结果为非零则转移到标号所在地址

ZF

JS 标号 SF=1 结果为负则转移到标号所在地址

JNS 标号 SF=0 结果非负则转移到标号所在地址 SF

JP 标号 PF=1 结果 1 的个数为偶数个则转移

JNP 标号 PF=0 结果 1 的个数为奇数个则转移 PF

JO 标号 OF=1 结果溢出则转移到标号所在地址 JNO 标号 OF=0 结果未溢出则转移到标号所在地址

OF

Page 8: 3 .2 指令系统

五、程序转移指令—条件转移

复杂转移:由多个标志的状态决定的转移 , 分为有符号数和无符号数转移•无符号数转移指令 比较两个无符号数,并根据比较结果转移

JA 标号 ;两数比较,高于则转移 ( JNBE )JNA 标号 ;两数比较,不高于则转移( JBE )JB 标号 ;两数比较,低于则转移 ( JNAE )JNB 标号 ;两数比较,不低于则转移( JAE )

•有符号数转移指令 比较两个带符号数,并根据比较结果转移

JG 标号 ;两数比较,大于则转移 ( JNLE )JNG 标号 ;两数比较,不大于则转移( JLE )JL 标号 ;两数比较,小于则转移 ( JNGE )JNL 标号 ;两数比较,不小于则转移( JGE )

Page 9: 3 .2 指令系统

五、程序转移指令—循环控制

•测试 CX 的值为 0 则转移JCXZ 标号 ; (CX)=0 则转移

•循环控制指令

CX 计数循环次数,每循环一次 CX← CX-1

LOOP 标号CX≠0 转移到标号继续循环,CX=0 顺序执行。

•无条件循环

•条件循环

LOOP Z 标号CX≠0 且 ZF=1 转移到标号继续循环,

CX = 0 或 ZF=0 顺序执行。

LOOPNZ 标号CX≠0 且 ZF=0 转移到标号继续循环,

CX=0 或 ZF=1 顺序执行。

Page 10: 3 .2 指令系统

五、程序转移指令—处理器控制对处理机的工作状态的控制指令,分为标志控制、外设同步工作状态控制两类指令。•标志控制

DF 标志CLD DF=0

STD DF=1

CF 标志CLCCF=0

STC CF=1

CMC CF= CF

IF 标志CLI IF=0

STI IF=1

•同步控制WAIT 指令—— CPU 处于空操作状态,每 5 个 T 周期测试信号线当为低电平时脱离 WAIT

TEST

LOCK 指令的前缀,在执行有 LOCK 指令时发出总线封锁信号,

LOCK

禁止其它主控设备申请总线。

例如 LOCK MOV AX , BX

Page 11: 3 .2 指令系统

五、程序转移指令—处理器控制•同步控制HLT 暂定指令 CPU 处于空操作状态,以下三种情况可以使 CPU 脱离暂定状态。

•RESET •NMI •当 IF=1 时 INTR •该指令是为中断等待而设。

NOP 空操作指令,进行一个总线周期的空操作,相当于延时 4T 时钟周期。ESC OPCODE , SRC 交权指令 , 把控制权交给协处理器。OPCODE ~ 6 位立即数,外部处理器操作指令。SRC ~外部处理器的内存源操作数,由 8086 取出放在数据总线上供外部理器操作。

Page 12: 3 .2 指令系统

第 三 章 习 题 课 P129 3.4 题阅读下列各小题的指令序列,在后面空格中填人该指令序列的执行结果。 (1) MOV BL,85H MOV AL,17H ADD AL,BL ;AL=85H+17H=09CH DAA ;AL=09CH+66H=02H CF=1

AL =02H BL=85H CF =1

(2) MOV AX,BX NOT AX ADD AX, BX ; 相反数相加 =FFH INC AX ;AX=0H INC 不影响标志位 CF=0H

AX = 0H CF =0H

debug

Page 13: 3 .2 指令系统

第 三 章 习 题 课 P129 3.4 题阅读下列各小题的指令序列,在后面空格中填人该指令序列的执行结果。 (3) MOV AX,OFF60H

STC ;CF=1

MOV DX, 96 ;DX=96=0060H

XOR DH, OFFH ;DH=FFH DX=FF60HCF=0

SBB AX DX ;AX=0000H

AX =0000H ; CF =0 (4) MOV BX,OFFFEH

MOV CL,2 ;BX=1111 1111 1111 1110B

SAR BX, CL ;BX=1111 1111 1111 1111BCF=1

BX =FFFFH ; CF =1

Page 14: 3 .2 指令系统

第 三 章 习 题 课 P130 3.6 题

3.6 AND AL, AL

JZ BRCH1 ;AL=0 满足条件

RCR AL, 1

JZ BRCH2 ; AL=01 此时 CF=0 能满足条件

RCL AL, 1

INC AL ;FFH+1=00H

JZ BRCH3

上述程序运行后,试回答:

(1) 当 (AL)=0 时,程序转向 BRCH1 。

(2) 当 (AL)= 01H 时,程序转向 BRCH2 。

(3) 当 (AL)= FFH 时,程序转向BRCH3 。

Page 15: 3 .2 指令系统

第 三 章 习 题 课 P130 3.3 题 设下列各转移指令的第一个字节在内存中的地址为 CS=2000H 和 IP =016EH, 且环境均为 DS=6000H, BX = 16C0H, (616C0H) = 46H, (616C1H) =01H,(616C2H) = 00H , (616C3H) = 30H , (61732H) = 70H (61733H) = 17H 。写出下列无条件转移指令执行后 CS 和 IP 的值。和指令左首的 16 进制编码是该指令的机器码。指令的目的地址用相应的标号表示。

( 1 ) EBE7 JMP SHORT AGAIN( 2 ) E90016 JMP NEAR OTHER( 3 ) FFE3 JMB BX解:

( 1 )为段内短转移, SHORT AGAIN 为 8 位位移量 =( E7H )补 =-19H( IP ) =16EH+2H+ ( -19H ) =157H( CS ) =2000H

( 2 )为段内长转移, NEAR OTHER 为 16 位位移量 =1600H( IP ) =16EH+3H+1600H=1771H( CS ) =2000H

( 3 )为段内长转移。( IP ) = ( BX ) =16C0H( CS ) =2000H

Page 16: 3 .2 指令系统

第 三 章 习 题 课 P130 3.3 题 设下列各转移指令的第一个字节在内存中的地址为 CS=2000H 和 IP =016EH, 且环境均为 DS=6000H, BX = 16C0H, (616C0H) = 46H, (616C1H) =01H,(616C2H) = 00H , (616C3H) = 30H , (61732H) = 70H (61733H) = 17H 。写出下列无条件转移指令执行后 CS 和 IP 的值。和指令左首的 16 进制编码是该指令的机器码。指令的目的地址用相应的标号表示。

( 4 ) EA46010030 JMP FAR PROB( 5 ) FF67 JMP WORD PTR 0072H[BX]( 6 ) FFEB JMP DWORD PTR [BX]解:

( 4 )为段间转移 FAR PROB 为地址 3000H : 0146H( IP ) ==0146H( CS ) =3000H

( 5 )为段内转移,目标地址DS:BX=6000H*10H+16C0H=616C0H→0146H

( IP ) =0146H( 6 )为段间转移,目标地址 DS:[BX+2]:[BX]=[616C2H]:[616C0H]=3000H:0146H

( IP ) =0146H( CS ) =3000H

Page 17: 3 .2 指令系统

课后作业:1. P129 3.3 (1) (2) (3)

2. P130 3.6

3. P131 3.11