通用寄存器介绍和段寄存器的介绍

以下内容来自百度百科: (提示:点击蓝色的字,可以进入百度百科看相关内容)


通用寄存器

编辑本段简介

通用寄存器

  通用寄存器

通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些特殊功能。通用寄存器的长度取决于 机器字长,汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途,只有这样,才能在程序中做到正确、合理地使用它们。
16位cpu通用寄存器共有 8 个:AX,BX,CX,DX,BP,SP,SI,DI.
八个寄存器都可以作为普通的 数据寄存器使用。
但有的有特殊的用途:AX为 累加器,CX为计数器,BX,BP为 基址寄存器,SI,DI为 变址寄存器,BP还可以是基
指针,SP为 堆栈指针
32位cpu通用寄存器共有 8 个: EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI功能和上面差不多

编辑本段主要用途

通用寄存器数据
寄存器AX乘、除运算,字的输入输出,中间结果的缓存
AL字节的乘、除运算,字节的输入输出,十进制算术运算
AH字节的乘、除运算,存放中断的功能号
BX存储器指针
CX串操作、循环控制的计数器
CL移位操作的计数器
DX字的乘、除运算,间接的输入输出
变址
寄存器SI存储器 指针、串指令中的源 操作数指针
DI存储器 指针、串指令中的目的 操作数指针
变址
分类示意图

  分类示意图

寄存器BP 存储器指针、存取 堆栈的指针
SP堆栈的栈顶指针
指令指针IP/EIP
标志位寄存器Flag/EFlag
32位
CPU的
段寄存器16位CPU的
段寄存器ES 附加段寄存器
CS 代码段寄存器
SS 堆栈段寄存器
DS 数据段寄存器
新增加的
段寄存器FS 附加段寄存器
GS 附加段寄存器

编辑本段相关信息

寄存器是CPU内部重要的数据存储资源,用来暂存数据和地址,是汇编程序员能直接使用的硬件资源之一。由于寄存器的存取速度比内存快,所以,在用汇编语言编写程序时,要尽可能充分利用寄存器的存储功能。
运算器结构

  运算器结构

寄存器一般用来保存程序的中间结果,为随后的指令快速提供 操作数,从而避免把中间结果存入内存,再读取内存的操作。在高级语言(如:C/C++语言)中,也有定义 变量为寄存器类型的,这就是提高寄存器利用率的一种可行的方法。
另外,由于寄存器的个数和容量都有限,不可能把所有中间结果都存储在寄存器中,所以,要对寄存器进行适当的调度。根据指令的要求,如何安排适当的寄存器,避免 操作数过多的传送操作是一项细致而又周密的工作。

数据寄存器

编辑本段数据寄存器

AX、BX、CX、DX可以称为数据寄存器,用来暂时存放计算过程中所用到的 操作数、结果和信息。这4个16位寄存器又可分别分成高8位(AH、BH、CH、DH)和低8位(AL、BL、CL、DL)。因此它们既可作为4个16位数据寄存器使用,也可作为8个8位数据寄存器使用,在 编程时可存放源 操作数、目的操作数或运算结果。数据寄存器是存放 操作数、运算结果和运算的中间结果,以减少访问 存储器的次数,或者存放从存储器读取的数据以及写入存储器的数据的寄存器。


分类

AX(accumulator) 累加器。作为 累加器使用。是算术运算的主要寄存器。在乘、除等指令中指定用来存放 操作数。以及所有的 I/O指令都使用这一寄存器与 外部设备传送信息。
BX(base) 基址。可以作为 通用寄存器使用。此外在计算机存储地址时,它经常用作 基址寄存器。
CX(count)计数。可以作为通用寄存器使用。常用来保存计数值,如在循环、位移和串处理指令中作隐含计数器。
DX(data)数据。可以作为通用寄存器使用。一般在作双 字长运算时把DX和AX组合在一起存放一个双字长数,DX用来存放高位数。对于某些I/O操作,DX可可用来存放I/O的 端口地址
段寄存器




含义

段寄存器是因为对内存的分段管理而设置的。16位CPU有四个16 位段寄存器,所以,其程序可同时访问四个不同含义的段。
段寄存器CS指向存放程序的内存段,IP是用来存放下条待执行的指令在该段的 偏移量,把它们合在一起可在该内存段内取到下次要执行的指令。
段寄存器SS指向用于 堆栈的内存段,SP是用来指向该堆栈的栈顶,把它们合在一起可访问栈顶单元。另外,当 偏移量用到了 指针寄存器BP,则其缺省的段寄存器也是SS,并且用BP可访问整个 堆栈,不仅仅是只访问栈顶。
段寄存器DS指向 数据段,ES指向附加段,在存取 操作数时,二者之一和一个 偏移量合并就可得到 存储单元物理地址。该 偏移量可以是具体数值、符号地址和指针寄存器的值等之一,具体情况将由指令的 寻址方式来决定。
通常,缺省的 数据段寄存器是DS,只有一个例外,即:在进行串操作时,其目的地址的段寄存器规定为ES。当然,在一般指令中,我们还可以通过改变前缀中的“段取代”字段来改变 操作数的段寄存器。
“可选用的段寄存器”即是可以用强置说明这些段寄存器的值来作为其 操作数地址的 段地址

组成

段寄存器:在8086系统中,访问 存储器地址码段地址和段内 偏移地址两部分组成。段寄存器用来存放各分段的逻辑基值,并指示当前正在使用的4个逻辑段,包括 代码段寄存器CS、 堆栈段寄存器SS、 数据段寄存器DS和附加段 数据寄存器ES。

分类

1, 代码段寄存器 CS(Code Segment):存放当前正在运行的程序代码所在段的段基址,表示当前使用的指令代码可以从该段寄存器指定的 存储器段中取得,相应的偏移量则由IP提供。
2, 数据段寄存器 DS(Data Segment):指出当前程序使用的数据所存放段的最低地址,即存放数据段的段基址。
3, 堆栈段寄存器 SS(Stack Segment):指出当前堆栈的底部地址,即存放堆栈段的段基址。
4, 附加段寄存器 ES(Extra Segment):指出当前程序使用附加 数据段的段基址,该段是串操作指令中目的串所在的段。
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页