Chinaunix首页 | 论坛 | 博客
  • 博客访问: 226342
  • 博文数量: 45
  • 博客积分: 1850
  • 博客等级: 上尉
  • 技术积分: 473
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-11 10:21
文章分类
文章存档

2006年(17)

2005年(28)

我的朋友

分类:

2005-09-16 10:21:45

理机控制类指令用来控制各种CPU的操作。共分两类,一类是针对标志位的指令,对标志位进行设置;另一类是对CPU状态进行控制的指令。

1、标志位操作指令
这一类指令可用来对CF、DF和IF三个标志进行设置,除影响所设置的标志外,均不影响其他标志。
(1)进位标志操作指令
CLC    ;复位进位标志:CF←0
STC    ;置位进位标志:CF←1
CMC    ;求反进位标志:CF←~CF
(2)方向标志操作指令
CLD    ;复位方向标志:DF←0
STD    ;置位方向标志:DF←1
在串操作指令使用之前,通常应先设置方向标志,以决定SI/DI是增量还是减量。
(3)中断标志操作指令
CLI    ;复位中断标志,禁止可屏蔽中断:IF←0
STI    ;置位中断标志,允许可屏蔽中断:IF←1
许多指令的执行都会影响标志,上述指令提供了直接改变CF、DF、IF的方法。标志寄存器中的其他标志,需要用LAHF/SAHF或PUSHF或POPF指令间接改变。
2、CPU状态控制指令
这类指令用来控制CPU的状态,使8086暂停、等待或控操作等
(1)空操作指令NOP
NOP
该指令不执行任何操作,但占用一个字节存储单元,空耗一个指令周期。该指令常用于程序调试。
(2)段超越前缀指令
SEG:        ;即CS:、SS:、DS:、ES,取代默认段寄存器
在允许段超越的存储器操作数之前,使用段超越前缀指令,将不采用默认的段寄存器,而是采用制定的段寄存器寻址操作数。
(3)封锁前缀指令LOCK
LOCK      ;封锁总线
这是一个指令前缀,可放在任何指令前。这个前缀使得在这个指令执行时间内,8086处理器的封锁输出引脚有效,即把总线封锁,使别的控制器不能控制总线;直到该指令执行完后,总线封锁解除。当CPU与其他处理机协同工作时,该指令可以避免破坏有用信息。
(4)暂停指令HLT
HLT      ;进入暂停状态
暂停指令使CPU进入暂停状态,这时CPU不进行任何操作。当CPU发生复位或来自外部的中断时,CPU脱离暂停状态。HLT指令可用于程序中等待中断。当程序必须等待中断时,可用HLT,而不必用软件死循环。然后,中断使CPU脱离暂停状态,返回执行HLT的下一条指令。注意,该指令在PC机中将引起所谓的“死机”,一般的应用程序不要使用。
(5)交权指令ESC
ESC  6位立即数,REG/MEM   ;把浮点指令交给浮点处理器
交权指令ESC把浮点指令交给浮点处理器执行。为了提高系统的浮点运算能力,8086系统中可加入浮点运算协处理器8087。但是,8087的浮点指令是和8086的整数指令组合在一起的,8086主存中存储8087的操作码及其所需要的操作数。当8086发现是一条浮点指令时,就利用ESC指令将浮点指令交给8087执行,6位立即数即为负点指令的操作码,REG/MEM指示浮点指令的操作数。当操作数为寄存器时,它的编码也作为操作码;如果为存储器操作数,CPU读出这个操作数送给协处理器。
(6)等待指令WAIT
WAIT    ;进入等待状态
WAIT指令在8086的测试输入引脚为高电平无效时,使CPU进入等待状态;这时,CPU并不作任何操作。测试为低电平有效时,CPU脱离等待状态,继续执行WAIT指令后面的指令。
  浮点指令经由8086CPU处理器发往8087,并与8086本身的整数指令在同一个指令序列;而8087执行浮点指令较慢,所以8086必须与8087保持同步。8086就是利用WAIT指令和测试引脚实现与8087同步运行的。

阅读(2593) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~