2015年计算机三级考试PC技术基础知识(13)
发布时间:2012/4/28 16:18:38 来源:城市网学院 编辑:ziteng
5.轨范节制指令
8086/8088轨范中指令的执行挨次是由代码寄放器CS和指针IP来抉择的。轨范转移指令用来改蹦这两个寄放器的内容,从而改变轨范的执行挨次。转移指令分四组;无前提转移指令、前提转移指令、轮回节制指令及有关间断指令。
(1)无前提转移指令
①JMP
名目: JMP OPRD(标号)
功能:无前提转移到目的单元,无返回值。
段内直接转移,规模为段内任何位址(±32K)。若转移规模在±127B之内时,则称之为段内短转移。例如:
JMP SHORT NEXT ;段内短转移
段间直接转移,可转到轨范的任何位置,例如:JMP FAR PTR NEXT
此时需用NEXT的段地址和偏移地址庖代当前的CS和IP。段内借居转移,可转移到段内的任何位置,例如:JMP CX
指令执行时用CX的内容庖代当前IP,而CS不变。段间借居转移,可转移到轨范的任何位置。例如:JMP SEGOFF
指令执行时,在由SEGOFF的段和偏移量所确定的双字单元中,用较小地址的字单元内容庖代IP,较大地址字单元内容庖代CS。②CALL
名目: CALL OPRD挪用指令。
③RET
返回指令。
(2)前提转移指令
前提转移指令以某些标识表记标帜位或其逻辑运算为依据,知足前提时则转移。本类指令的转移的目的地址在±127字节以内。本类指令大体上分三类:
①依据单个标识表记标帜位的前提转移指令
依据单个标识表记标帜位的前提转移指令如下表所示。
依据单个标识表记标帜位的前提转移指令
指 令 转移前提 说 明
JC
JNC CF=1
CF=0
有进位/借位时转移
无进位/借位时转移
JE/JZ
JNE/JNZ ZF=1
ZF=0 相等/等于零时转移
不相等/不等于零时转移
JS
JNS SF=1
SF=0 符号位为1(负数)时转移
符号位为0(正数)时转移
JO
JNO OF=1
OF=0 有溢出时转移
无溢出时转移
JP/JPE
JNP/JPO PF=1
PF=0 奇偶位为1/偶时转移
奇偶位为0/奇时转移
②用于无符号数的前提转移指令
用于无符号数的前提转移指令如下表所示。
本指令用于无符号数斗劲。
用于无符号数的前提转移指令
指 令 转移前提 说 明
JA/JNB
JAE/JNB
JB/JNAE
JBE/JNA CF=0且ZF=0
CF=0或ZF=1
CF=1且ZF=0
CF=1且ZF=1 高于/不等于且不低于时转移
高于或等于/不低于时转移
低于/不高于、不等于时转移
高于、等于/不等于时转移
③带符号数的前提转移指令
带符号数的前提转移指令如下表所示。
带符号数的前提转移指令
带符号数的前提转移指令
指 令 转移前提 说 明
JG/JNLE (SF)XOR(OF)=0且ZF=0 高于/低于且不等于时转移
JGE/JNL (SF)XOR(OF)=0
或ZF=1 高于或等于/低于时转移
JL/JNGE ( SF)XOR(OF)=1且ZF=0 高于/低于时转移
JLE/JNG (SF)XOR(OF)=1
或ZF=0 低于或等于/高于时转移
上述指令用于带符号数的斗劲。 [NextPage] (3)轮回指令
轮回节制指令用来节制一个轨范段的一再执行。
①LOOP
名目: LOOP 标号
功能:方针地址在+1~128字节以内,一再次数置CX中且CX≠0时轮回。它等效于下述2条指令的组合:
DEC CX
JNE NEXT
②LOOPZ(或LOOPE)标号
此指令有两种助记符。此指令使(CX)←(CX)-1,当CX≠0而且在标识表记标帜位ZF=1的前提下,轮回至方针操作数。
③LOOPZ(或LOOPE)标号
指令使(CX)←(CX)-1,且判定只有当CX≠0,且标识表记标帜位ZF=0的前提下,轮回至方针操数。
④JCXZ 标号
若CX=0,则此指令节制转移到方针操作数。
(4)间断指令
间断指令许可轨范在需要时去启动间断处事轨范。
①●INT n 启动由类型码n所划定的间断处事轨范。
②●INTO 溢出间断。
③●IRET 间断返回。
6.措置器节制指令
(1)操作标识表记标帜
零丁对标识表记标帜进行操作的指令有:
①●CLC 清进位,CF=0
②●CMC 进位取反
③●STC 置CF=1
④●CLD 置DF=0
⑤●STD 置DF=1
⑥●CLI 置IF=0
⑦●STI 置IF=1
(2)措置器暂停
HLT 措置器暂停,直到呈现间断复位旌旗灯号。
(3)措置器期待
WAIT 期待状况,按期搜检TEST旌旗灯号。
(4)措置器脱离
SEC 换码指令,向外措置器供给数据。
(5)总线封锁
LOCK 总线锁定数令。
(6)空操作指令
NOP 除指令地址指针加1外,不执行任何操作。
(二)80286扩展的指令
80286指令系统完全兼容8086/8088指令系统。因为80286有实地址和虚地址呵护两种工作体例,因而与8086指令系统斗劲,其绝大部门指令是不异的(仅做了少量增添)。例如,在数据传送指令组中,增添了PUSHA和POPA,用于过程挪用、间断处事中恢复现场;在串操作指令中增添了INS和OUTS指令,以实现成批数据的输入和输出;在节制转移指令中,增添ENTER、LEAVE、BOUND等三条有关过程措置的指令。
80286还增添了专门用虚地址呵护体例的15条新指令。它们是:
●IGDT 装入全局描述符表寄放器。
●SGDT 存放全局描述符表寄放器。
●LIDT 装人世杜缦汨述符表寄放器。
●SIDT 存放间杜缦汨述符表寄放器。
●LLDT 从寄放器/存储器中装入局部描述符寄放器。
●SLDT 把同部描述了表寄放器放人世放器/存储器。
●LTR 从寄放器/存储器中装入使命寄放器。
●STR 把使命寄放器存放到寄放器/存储器。
●LMSW 从寄放器/存储器装入机械状况字。
●SMSW 把机械状况字存放到寄放器/存储器。
●LSL 从寄放器/存储器装入段限。
●LAR 从寄放器/存储器装入访谒权。
●ARPL 从寄放器/存储器中调整已请求的特权书。
●VERR 从寄放器/存储器读进行验证。
●VERW 从寄放器/存储器写进行验证。 [NextPage] (三)80386扩展的指令80386新增的指令组有:1.高级说话撑持指令组
BOUND 数组鸿沟搜检
ENTER 为进入轨范成立的参数块
LEAVE 分开轨范
SETCC 按前提置字节
2.呵护指令组
CLTS 使命切换标识表记标帜置0
SGDT 存放全局描述符表
SIDT 存放间杜缦汨述符表
STR 存放使命寄放器
SLDT 存放局部描述符表
LGDT 装入全局描述符表
LIDT 装人世杜缦汨述符表
LTR 装入使命寄放器
LLDT 装入局部描述符表
ARPL 调整请求特权级
LAR 装入存取权
LSL 装入段鸿沟
VERR/VERW 查证段能否读写
LMSW 装入机械状况字
SMSW 存放机械状况字
3.位措置指令组
BT 位测试
BTS 位测试并置“1”
BTR 位测试并复位
BTC 位测试并求补
BSF 向前位扫描
BSR 向后位扫描
4.数据传送指令组
数据传送指令中增添的3条有关地址操作的指令:
LFS 指针装入F段寄放器
LGS 指针装入G段寄放器
LSS 指针装入S(仓库)段寄放器
此外还对地址操作的3条指令功能进行了调整:
LXA 装入有用地址
LDS 装入D段寄放器
LES 装入E段寄放器
5.标识表记标帜措置指令组
标识表记标帜措置指令中增添2条新指令:PUSHFD EFLAGS进栈POPFD EFLAGS出栈
此外,在逻辑移位指令组中,增添了双位左移和双位右移呼吁SHLD/SHRD等等。
(四)80486扩展的指令
80486指令系统和80386根基不异,但为撑持Cache和多重措置,80486在80386指令系统的基本上,又增添了如下几条新指令。
它们是:
●BSWAP 在32位寄放器内交流字节挨次。
●XADD 执行原子交流并把它加到存储器操作数上,保留原值。
●CMPXCHG 用以存储器为基本的操作数执行原子斗劲和有前提的交流。
●INVD 使整个指令数据Cache无效。
●WBINVD 使数据Cache无效,经由过程二级Cache,写回到脏Cache行。
●INVLPG 使TLB中的符号无效。