886有14个16位寄存器,这14个寄存器根据其用途可分为(1)通用寄存器、(2)指令指针、(3)标志寄存器、(4)段寄存器4种。
)通用寄存器有8个,可以分为数据寄存器(4个)和指针寄存器及索引寄存器(4个)两个组。
数据被分成:个
Ahal=ax(accumulator ) :加法寄存器,常用于运算; 乘除运算等指令中有用于存储操作数指定,另外,所有I/O指令使用该寄存器与外部设备传输数据.
bhbl=bx(base )地址索引中常用的基地址寄存器;
CHCL=CX(count ) :计数寄存器,常用于计数; 常用于保存计算值。 例如,在移位指令、循环、串行处理指令中用作隐式计数器。
DDL=dx(data ) :数据传输中常用的数据寄存器。
他们的特征在于,这四个16位寄存器被分成高8位: AH、BH、CH、DH .和低8位、AL、BL、CL、DL。 这两组8位寄存器可以分别寻址并单独使用。
另一组是指针寄存器和索引寄存器,包括:
堆栈指针(sp )堆栈指针,可以与SS结合使用以指向当前堆栈位置;
BP(basepointer ) :基地址指针寄存器,可用作SS的相对基地址位置;
源索引(si )源限定寄存器可以用于存储指向DS段的源限定指针。
目标索引(di ) :可用于存储es段的目标索引指针的目标索引寄存器。
这四个16位寄存器只能每16位进行访问操作,主要用于形成操作数的地址,在堆栈操作和索引操作中用于计算操作数的有效地址。
(2)将指令指针IP (指示指针)
指令指针IP是指向当前要检索的指令字节的16位专用寄存器。 当BIU从存储器中检索指令字节时,IP自动递增1,指向下一个指令字节。 请注意,IP是指指令地址的段内地址偏移,也称为偏移地址(Offset Address )或有效地址(EA,Effective Address )。
(3)标志寄存器fr )标志寄存器) )。
886有18位标志寄存器FR,FR有意义的是9位,其中6位是状态位,3位是控制位。
OF :溢出标志OF用于反映有符号数的加减运算结果是否溢出。 如果运算结果超出了当前运算位数所能表示的范围,则称为溢出,OF的值设定为1,否则OF的值清除为0。
DF :方向标志DF位用于确定串行操作命令执行时指针寄存器调整发生的方向。
IF :中断允许标志IF位用于确定CPU是否对来自CPU外部的可屏蔽中断的中断请求进行响应。 然而,无论该标志的值如何,CPU都必须响应由CPU外部的不可屏蔽中断引起的中断请求和在CPU内部产生的中断请求。 具体规定如下:
) 1、IF=1时,CPU能够对来自CPU外部可屏蔽中断的中断请求进行响应;
) 2、IF=0时,CPU不对来自CPU外部可屏蔽中断的中断请求进行响应。
TF :跟踪标志TF。 此标志可用于调试程序。 TF标志没有用于设置或澄清的特殊命令。
)1)如果TF=1,则CPU将指令单步执行,在此情况下,每当执行一个指令时,显示CPU中的每个寄存器的当前值和由CPU执行的下一指令。
)2) TF=0时,进入连续动作模式。
SF )符号标志SF是用于反映运算结果的符号位,与运算结果的最高位相同。 在微机系统中,由于符号数采用补数表示法,SF也反映运算结果的符号。 如果运算结果为正,则SF的值为0,否则值为1。
ZF :零标志ZF用于反映运算结果是否为0。 如果运算结果为0,则该值为1,否则该值为0。 此标志位可用于确定运算结果是否为0。
AF :在以下情况下,辅助进位标志AF的值设定为1,否则值为0。
)1)、字操作时,发生从低字节到高字节的进位或借位时;
) 2、字节操作时发生从后4位到前4位的进位或借位时。
PF :奇偶校验标志PF被用于反映运算结果中的“1”个奇偶校验。 如果“1”的个数为偶数,则PF的值为1,否则值为0。
CF :进位标志CF主要用于反映运算中是否发生进位或借位。 如果运算结果的最高位发生进位或借位,则值为1,否则为0。 )
4 )段寄存器(段寄存器)
为了运用所有内存区域,8086中设置了用于保存段地址的4个段寄存器。
代码段寄存器(cs );
数据段(ds ) :数据段寄存器;
堆栈段(ss ) :堆栈栈寄存器;
扩展段(es ) :添加段寄存器。
当执行一个程序时,确定程序代码、数据、栈分别使用存储器中的哪个位置,并通过设置段寄存器CS、DS、SS来指向这些开始位置。 通常固定DS,根据需要修改CS。 因此,程序在可寻址空间小于64K的情况下,可以写入任意大小。 因此,程序及其数据的组合大小限制在DS所指的64K以内。 这就是COM文件不能超过64K的原因。 8086以内存为战场,寄存器为军事基地,加快工作。
正在读取注释.
请登录后发表评论!
修正失败了。 请稍后再试