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指定。堆栈的地址增长方式一般是向上增长,栈底设在存储器的高
地址区,堆栈地址由高向低增长。
堆栈以字为单位进行操作,堆栈中的数据项以低字节在偶地址,高字节在奇
地址的次序存放,这样保证每访问一次堆栈就能压入/弹出一个字。


发布评论