2024年3月24日发(作者:)

寄存器的构成:

1.通用寄存器组

8086/8088CPU在执行指令部件EU中有4个16位通用寄存器,他们是AX(累

加寄存器),BX(基址寄存器),CX(计数寄存器),和DX(数据寄存器),可以存

放16位数据或地址。也可以分为8个8位寄存器来使用,低8位是AL、BL、CL

和DL,高8位是AH、BH、CH和DH,只能存放8 位数据,不能存放地址。

2.指针和变址寄存器

8086/8088CPU中,有一组4个16位寄存器,BP(基址指针寄存器),SP(堆栈

指针寄存器),SI(源变址寄存器),DI(目的变址寄存器)。这组寄存器存放的内容是

某一段内地址的偏移量。主要在堆栈操作和变址操作中使用。

BP和SP寄存器称为指针寄存器,与SS(堆栈段寄存器)联用,为访问现行

堆栈提供方便。通常BP寄存器在间接寻址中使用,操作数在堆栈中,由SS段寄

存器与BP组合形成操作数地址,即BP中存放现行堆栈中一个数据区“基址”

的偏移量。

SP在堆栈段中使用,PUSH 和POP指令是从SP寄存器得到现行堆栈段的段

内地址偏移量,所以称SP寄存器为堆栈指针,SP始终指向栈顶

寄存器SI和DI称为变址寄存器,通常与DS一起使用,为访问现行数据段提

供内地址偏移量。在串指令中,其源操作数的偏移量存放在SI中,目的操作数

的偏移量存放在DI中。

3.段寄存器

8086/8088CPU可以直接寻址1M字节的存储空间,直接寻址需要20位地址

码,而所有的内部寄存器都是16位的,只能直接寻址64K字节,因此采用分段

技术来解决。将1M字节的存储空间分成若干逻辑段,每段最长64K字节,这些

逻辑段在整个存储空间可以浮动。

8086/8088CPU设置了4个16位段寄存器,他们分别是CS(代码段寄存器),

DS(数据段寄存器),SS(堆栈段寄存器),ES(附加段寄存器)。由他们给出相应逻辑

段的首地址,称为“段基址”。段基址与段内偏移地址组合形成20位物理地址。

代码段存放可以执行的指令代码,数据断和附加段存放操作的数据,堆栈段

开辟为程序执行中所用的堆栈区。

4.指令指针寄存器

8086/8088CPU中设置了一个16位指令指针寄存器IP,用来存放将要执行的

下一条指令在现行代码段中的偏移地址。程序运行中,它有BIU自动将其修改,

使IP始终指向下一条将要执行的指令地址。

5.标志寄存器PSW

16位标志寄存器PSW用来存放运算结果的特征。常用作后续条件转移指令

的转移控制条件。

⑴ CF(Carry Flag)-进位标志位。本次运算中最高位有进位或借位时CF=1。

⑵ ⑵PF(Parity Flag)-奇偶校验位。本次运算结果中有偶数个1时,PF=1。

⑶AF(Auxiliary Carry Flag)-辅助进位标志位。本次运算结果,低4位向高4

位有进位或借位时,AF=1。

⑶ ZF(Zero Flag)-零标志位。本次运算结果为0时,ZF=1

⑷ ⑸SF(Sign Flag)-符号标志位。本次运算结果的最高位为1时,SF=1,否

则SF=0。

⑹OF(Over Flag)-溢出标志位。本次运算过程中产生溢出时,OF=1。

堆栈的概念

所谓堆栈是在存储器中开辟一个区域,用来存放需要暂时保存的数据。堆栈

段由段定义语句在存储器中定义一个段,他可以在存储器1M字节的空间中任意

浮动,堆栈段的容量小于等于64K字节。段基址由堆栈寄存器SS指定,栈顶由

堆栈指针SP指定。堆栈的地址增长方式一般是向上增长,栈底设在存储器的高

地址区,堆栈地址由高向低增长。

堆栈以字为单位进行操作,堆栈中的数据项以低字节在偶地址,高字节在奇

地址的次序存放,这样保证每访问一次堆栈就能压入/弹出一个字。