读王爽老师汇编语言笔记---寄存器(cpu工作原理)
2013-06-22 09:59
489 查看
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位寄存器组
2、 32位寄存器组
32位CPU除了包含了先前CPU的所有寄存器,并把通用寄存器、指令指针和标志寄存器从16位扩充成32位之外,还增加了2个16位的段寄存器:FS和GS。
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个内存单元
一个典型的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) |
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、FS和GS) | 1个指令指针寄存器(EIP) | 1个标志寄存器(EFlags) |
概括的讲,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个内存单元
相关文章推荐
- 读王爽老师汇编语言笔记---寄存器(内存访问)
- 汇编语言笔记02-寄存器(CPU工作原理)
- 汇编语言学习笔记(二):寄存器(cpu工作原理)
- 寄存器(CPU工作原理)01 - 零基础入门学习汇编语言06
- 读王爽老师汇编语言笔记---基础知识
- 读王爽老师汇编语言笔记---int指令、端口、外中断以及键盘的输入
- 汇编语言之寄存器(CPU工作原理)
- 汇编语言(学习笔记----寄存器CPU互作原理)
- 读王爽老师汇编语言笔记---转移指令的原理和call,ret指令
- 汇编语言-第二章 寄存器(CPU工作原理)之执行指令过程(二)
- 汇编语言--寄存器(cpu工作原理)
- 寄存器(CPU工作原理)04 - 零基础入门学习汇编语言09
- 汇编语言-第二章 寄存器(CPU工作原理)之执行指令过程(一)
- 寄存器(CPU工作原理)04 - 零基础入门学习汇编语言09
- 王爽汇编语言学习笔记(三)--寄存器(内存访问)
- 汇编语言学习——第二章 寄存器(CPU工作原理)
- 汇编语言01——寄存器(CPU的工作原理)
- 汇编语言(学习笔记----寄存器CPU互作原理)
- 读王爽老师汇编语言笔记---第一个汇编程序
- 寄存器(CPU工作原理)07 - 零基础入门学习汇编语言12