读王爽老师汇编语言笔记---寄存器(cpu工作原理)

2013-6-19 21:12:07


一个典型的cpu是用运算器、控制器、寄存器等器件组成。在cpu中 
运算器进行信息处理,寄存器进行信息存储,控制器控制各个器件进行工作,内部总线连接各个器件,在他们之间进行数据的传送。
对于程序员来说,cpu的主要器件就是寄存器。寄存器是cpu中程序员可以用指令读写的的部件,程序员通过改变各种寄存器中的内容来时来实现对cpu的控制


不同的cpu,寄存器的个数,结构是都不同的,8086有14个寄存器,每个寄存器都有对应的名字
如:AX BX CX DX SI DI SP BP IP CS SS DS ES PSW 
8086cpu的所有寄存器都是16位,存放2个字节
AX BX CX DX 四个寄存器用来存放一般性的数据,被称为通用寄存器


段寄存器:CS DS SS ES


CS和IP 是8086cpu中最关键的寄存器,它们指示了cpu当前要读取指令的地址。
CS为代码段寄存器 IP为指令指针寄存器,
例如:
在8086机中,任意时刻,假设CS中的内容为M, IP中的内容为N,
8086cpu将内存M * 16 + N 单元开始,读取一天指令并执行
也就是说:8086中,任意时刻cpu将CS:IP指向的内容分当作指令执行。

切不能通过mov指令来设置CS IP的值,原因很简单,8086cpu没有提供这个功能
能够修改他们内容的指令被统称为转移指令(jmp)

1、 16位寄存器组

16位CPU所含有的寄存器有(见图2.1中16位寄存器部分):

4个数据寄存器(AX、BX、CX和DX)

2个变址和指针寄存器(SI和DI)2个指针寄存器(SP和BP)

4个段寄存器(ES、CS、SS和DS)

1个指令指针寄存器(IP)1个标志寄存器(Flags)

2、 32位寄存器组

32位CPU除了包含了先前CPU的所有寄存器,并把通用寄存器、指令指针和标志寄存器从16位扩充成32位之外,还增加了2个16位的段寄存器:FS和GS。

32位CPU所含有的寄存器有(见图2.1中的寄存器):

4个数据寄存器(EAX、EBX、ECX和EDX)

2个变址和指针寄存器(ESI和EDI)2个指针寄存器(ESP和EBP)

6个段寄存器(ES、CS、SS、DS、FSGS)

1个指令指针寄存器(EIP)1个标志寄存器(EFlags)





16位结构的cpu
概括的讲,16位结构描述了一个cpu具有下面几个方面的结构特征:
1、运算器一次最多可以处理16位的数据
2、寄存器的最大宽度为16
3.寄存器和运算器之间的通路为16位


8086是一个16位结构的cpu,也就是说,在8086内部,能够一次性处理、传输、暂时存储的信息的最大长度是16位的。内存单元的地址在送上地址总线之前,必须在cpu中处理传输、暂时存放,对于16位cpu,
能一次性处理,传输、暂时存储16位的地址


8086有20位地址总线 ,可以传输20位地址, 寻址能力达到1MB,8086的cpu又是16位结构,在内部次性处理,传输、暂时存储16位的地址,,如果将地址从内部简单的出发,那么它只能送出16位的地址,表现的寻址能力大大降低


8086cpu采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址
1、 cpu相关部件提供两个16位的地址。一个称段地址,另一个称为偏移地址
2、段地址和偏移地址通过内部总线送入一个称为地址加法器的部件
3、地址加法器的部件将2个16位的地址合成一个20位的物理地址
4、地址加法器通过内部总线将20位的物理地址送入输出输入的控制电路
5、 输出输入控制电路将20为物理地址送到地址总线上
6、20位物理地址被地址总线传送到存储器
(地址加法器采用物理地址 = 段地址 * 16 + 偏移地址的方法来合成物理地址) 


上面公式的本质含义:
cpu在访问内存时,用一个基础地址(段地址 * 16) 和一个相对基础地址的偏移地址相加,给出内存单元的物理地址


在编程时根据需要,将若干地址连续的内存单元看作一个段,用段地址 * 16定位段的起始位置(基础地址),用偏移地址定位段中的内存单元,所以
1、段地址必然是16的倍数,所以一个段的其实地址也一定是16的倍数
2、偏移地址为16位,16位的寻址能力为64KB,所以一个段的长度最大为64KB


有段地址和偏移地址合成物理地址
所以cpu可以用不同的段地址和偏移地址形成同一个物理地址
cpu访问内存单元时,必须向内存提供内存单元的物理地址
给定一个段地址的话,因为偏移地址为16位
所以最多可以偏移FFFFH,也就是最多可以偏移64KB个内存单元
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

max_min_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值