3 .2 指令系统
-
Upload
rylee-hubbard -
Category
Documents
-
view
55 -
download
6
description
Transcript of 3 .2 指令系统
3 . 2 指令系统
按功能分为:•数据传送指令•算术运算指令•位处理指令(逻辑运算指令)•串操作指令•控制转移指令•处理机控制指令
五、程序转移指令—无条件转移和条件转移
无条件转移 :转移发生不需要状态信息,执行到 JMP处则发生转移。
Part1
JMP AA
Part2
AA XXXX
Part3
无条件转移指令
转移跳过的地址
下一条执行指令
条件转移 :当条件满足是发生转移,否则顺序执行下一条指令。
Part1
JCC AA
XXXX
Part2
AA XXX
Part3
条件转移指令
转移跳过的地址
下一条执行指令
条件成立?
No
Yes
五、程序转移指令—无条件转移
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
五、程序转移指令—无条件转移
•段内转移:•直接短转移 :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) 执行
五、程序转移指令—无条件转移
•执行操作: (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
例如 :
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
五、程序转移指令—条件转移
条件转移都是短转移,转移距离只能在( -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
五、程序转移指令—条件转移
复杂转移:由多个标志的状态决定的转移 , 分为有符号数和无符号数转移•无符号数转移指令 比较两个无符号数,并根据比较结果转移
JA 标号 ;两数比较,高于则转移 ( JNBE )JNA 标号 ;两数比较,不高于则转移( JBE )JB 标号 ;两数比较,低于则转移 ( JNAE )JNB 标号 ;两数比较,不低于则转移( JAE )
•有符号数转移指令 比较两个带符号数,并根据比较结果转移
JG 标号 ;两数比较,大于则转移 ( JNLE )JNG 标号 ;两数比较,不大于则转移( JLE )JL 标号 ;两数比较,小于则转移 ( JNGE )JNL 标号 ;两数比较,不小于则转移( JGE )
五、程序转移指令—循环控制
•测试 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 顺序执行。
五、程序转移指令—处理器控制对处理机的工作状态的控制指令,分为标志控制、外设同步工作状态控制两类指令。•标志控制
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
五、程序转移指令—处理器控制•同步控制HLT 暂定指令 CPU 处于空操作状态,以下三种情况可以使 CPU 脱离暂定状态。
•RESET •NMI •当 IF=1 时 INTR •该指令是为中断等待而设。
NOP 空操作指令,进行一个总线周期的空操作,相当于延时 4T 时钟周期。ESC OPCODE , SRC 交权指令 , 把控制权交给协处理器。OPCODE ~ 6 位立即数,外部处理器操作指令。SRC ~外部处理器的内存源操作数,由 8086 取出放在数据总线上供外部理器操作。
第 三 章 习 题 课 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
第 三 章 习 题 课 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
第 三 章 习 题 课 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 。
第 三 章 习 题 课 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
第 三 章 习 题 课 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
课后作业:1. P129 3.3 (1) (2) (3)
2. P130 3.6
3. P131 3.11