杀出条血路来

坚持就是胜利

汇编-寄存器组

 

寄存器组

一、寄存器组

数据寄存器、指针寄存器和变址寄存器称为通用寄存器,除了各自规定的专门用途之外,还可以用于传送和暂存数据,可以保存算术逻辑运算中的操作数和运算结果。

通用寄存器专门用途:

8086/8088CPU的四个段寄存器均是16位的,分别称为代码段,数据段,堆栈段和附加段寄存器组。依赖这四个段寄存器实现寻址1M字节物理地址空间。相应的也有四个段:代码段,数据段,堆栈段和附加段。

指令指针IP也是16位的,类似于8080/8085中的程序计数器。指令指针IP给出接着要执行的指令在代码段中的偏移。

8086/8088CPU中有一个16位的标志寄存器,包含了9个标志,主要用于反映处理器的状态和运算结果的某些特征。

寄存器组

一、寄存器组

数据寄存器、指针寄存器和变址寄存器称为通用寄存器,除了各自规定的专门用途之外,还可以用于传送和暂存数据,可以保存算术逻辑运算中的操作数和运算结果。

通用寄存器专门用途:

8086/8088CPU的四个段寄存器均是16位的,分别称为代码段,数据段,堆栈段和附加段寄存器组。依赖这四个段寄存器实现寻址1M字节物理地址空间。相应的也有四个段:代码段,数据段,堆栈段和附加段。

指令指针IP也是16位的,类似于8080/8085中的程序计数器。指令指针IP给出接着要执行的指令在代码段中的偏移。

8086/8088CPU中有一个16位的标志寄存器,包含了9个标志,主要用于反映处理器的状态和运算结果的某些特征。

运算结果标志:进位标志CF,零标志ZF,符号标志SF,溢出标志OF,奇偶标志PF,辅助进位标志AF。

状态控制标志:方向标志DF,中断允许标志IF,追踪标志TF

 

二、段寄存器

   8086/8088CPU有20跟地址线,可直接寻址的物理地址空间为1M,但是ALU每次最多进行16位运算,存放存储器单元地址偏移的指针寄存器都是16位。解决方法是通过对物理存储器进行分段和使用段寄存器的方法来有效地实现了寻址1M字节物理空间。

   逻辑段与物理段特点(1M=1024K=16*64K):

   逻辑段的开始地址必须为16的倍数;(段寄存器长度为16位)

   逻辑段的最大长度为64k;(指针寄存器长度为16位)

   逻辑段与逻辑段可以相连,也可以不相连,还可以部分重叠。

  

2.1 形成物理地址的方法

   段的起始地址为XXXX0:地址线为20位,并且起始地址为16的倍数,所以十六进制4个X一个0。显然,段起始地址等于段值乘以16,左移4位。

   要访问的某一个存储单元总是属于某个段,我们把存储单元的地址与所在段的起始地址的差称为段内偏移。存储单元的物理地址等于段起始地址加上偏移。

   于是,存储单元的逻辑地址由段值和偏移两部分组成:

段值:偏移

   根据逻辑地址可方便地得到存储单元的物理地址:

   物理地址 = 段值x16 + 偏移

 

2.2段寄存器使用的一般规定

 

运算结果标志:进位标志CF,零标志ZF,符号标志SF,溢出标志OF,奇偶标志PF,辅助进位标志AF。

状态控制标志:方向标志DF,中断允许标志IF,追踪标志TF

 

二、段寄存器

   8086/8088CPU有20跟地址线,可直接寻址的物理地址空间为1M,但是ALU每次最多进行16位运算,存放存储器单元地址偏移的指针寄存器都是16位。解决方法是通过对物理存储器进行分段和使用段寄存器的方法来有效地实现了寻址1M字节物理空间。

   逻辑段与物理段特点(1M=1024K=16*64K):

   逻辑段的开始地址必须为16的倍数;(段寄存器长度为16位)

   逻辑段的最大长度为64k;(指针寄存器长度为16位)

   逻辑段与逻辑段可以相连,也可以不相连,还可以部分重叠。

  

2.1 形成物理地址的方法

   段的起始地址为XXXX0:地址线为20位,并且起始地址为16的倍数,所以十六进制4个X一个0。显然,段起始地址等于段值乘以16,左移4位。

   要访问的某一个存储单元总是属于某个段,我们把存储单元的地址与所在段的起始地址的差称为段内偏移。存储单元的物理地址等于段起始地址加上偏移。

   于是,存储单元的逻辑地址由段值和偏移两部分组成:

段值:偏移

   根据逻辑地址可方便地得到存储单元的物理地址:

   物理地址 = 段值x16 + 偏移

 

2.2段寄存器使用的一般规定

阅读更多
文章标签: 汇编 存储
个人分类: 语言(汇编)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭