2015年计算机三级考试PC技术知识要点(14)
发布时间:2010/12/12 18:37:39 来源:城市学习网 编辑: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中的符号无效。 [NextPage] (五)Pentium扩展的指令1.Pentium扩展指令
Pentium指令系统包括了80486的全部指令又增加了5条新指令。它们是:CMPXCHG8B 算术类指令,8字节比较后交换RDMSR 读模型专用寄存器WRMSR 写模型专用寄存器RDTSC 读时间标记计数器RSM 由系统管理方式返回
2.PentiumⅡ扩展指令
PentiumⅡ微处理器中由于集成了多媒体扩展技术(MMX),因而增加了57条MMX指令。MMX指令集简介如下:
(1)算术运算指令
PADD[B,W,D] ;环绕加法[字节,字,双字]
PADDS[B,W] ;饱和带符号减法[字节,字]
PADDUS[B,W] ;饱和无符号减法[字节,字]
PSUB[B,W,D] ;环绕减法[字节,字,双字]
PSUBS[B,W] ;饱和带符号加法[字节,字]
PSUBUS[B,W] ;饱和无符号加法[字节,字]
PMULHW ;字高位紧缩乘法PMULLW ;字低位紧缩乘法
PMADDWD ;字紧缩乘法并累加结果
(2)比较指令
PCMPEO[B,W,D] ;相等紧缩比较[字节,字,双字]
PCMPGT[B,W,D] ;大小紧缩比较[字节,字,双字]
(3)转换指令
PACKUSWB ;字紧缩为字节
PACKSS[WB,DW] ;紧缩字到字节,双字到字
PUNPCKH[BW,WD,DQ] ;从MMX寄存器解压(交*)高阶字节、双字、四字
PUNPCKL[BW,WD,DQ] ;从MMX寄存器解压(交*)低阶字节、双字、四字
(4)逻辑指令
PAND ;按位AND
PANDN ;按位AND NOT
POR ;按位OR PXOR ;按位XOR
(5)移位指令
PSLL[W,D,Q] ;依据MMX寄存器中指定的数量或立即数值的紧缩左移逻辑操作[字,双字,四字]
PSRL[W,D,Q] ;依据MMX寄存器中指定的数量或立即数值的紧缩右移逻辑操作[字,双字,四字]
PSRA[W,D] ;依据MMX寄存器中指定的数量或立即数值的紧缩右移算术操作
(6)数据转移指令
MOV[D,Q] ;移入MMX寄存器或移出MMX寄存器[双字,四字]
(7)浮点和MMX状态管理指令
EMMS ;清除MMX状态
上述指令中,有的一条指令后带[B,W,D],表示该指令支持多种数据类型,即支持字节(B)、字(W)、双字(D)的操作。
3.PentiumⅢ扩展指令
PentiumⅢ为提高互联网计算能力,又增加了71条称为互联网SSE(Streaming SIMDExˉtensions,直译为数据流单指令多数据扩展)的指令和处理机序列号。它们是8条高速缓冲存储器控制指令,50条SIMD浮点指令和12条多媒体指令。