通用寄存器都有哪些?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通用寄存器都有哪些?相关的知识,希望对你有一定的参考价值。

各有什么作用?

1、数据寄存器

数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。

2、变址寄存器

32位CPU有2个32位通用寄存器ESI和EDI。其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。

3、指针寄存器

32位CPU有2个32位通用寄存器EBP和ESP。其低16位对应先前CPU中的SBP和SP,对低16位数据的存取,不影响高16位的数据。

4、段寄存器

段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。

5、指令指针寄存器

32位CPU把指令指针扩展到32位,并记作EIP,EIP的低16位与先前CPU中的IP作用相同。 指令指针EIP、IP(Instruction Pointer)是存放下次将要执行的指令在代码段的偏移量。

扩展资料

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

寄存器一般用来保存程序的中间结果,为随后的指令快速提供操作数,从而避免把中间结果存入内存,再读取内存的操作。在高级语言(如:C/C++语言)中,也有定义变量为寄存器类型的,这就是提高寄存器利用率的一种可行的方法。

另外,由于寄存器的个数和容量都有限,不可能把所有中间结果都存储在寄存器中,所以,要对寄存器进行适当的调度。根据指令的要求,如何安排适当的寄存器,避免操作数过多的传送操作是一项细致而又周密的工作。

参考资料来源:百度百科-通用寄存器

参考技术A 8086有14个16位寄存器:8个通用寄存器、1个指令指针寄存器、1个标志寄存器和4个段寄存器。它们都有名称,编程时使用其名称代表其保存的内容。

* AX――累加器(Accumulator),使用频度最高
* BX――基址寄存器(Base Register),常存放存储器地址
* CX――计数器(Count Register),常作为计数器
* DX――数据寄存器(Data Register),存放数据

8086的4个16位数据寄存器:AX、BX、CX、DX,都还可以分为高(H:High)、低(L:low)两个独立的8位寄存器,分别取名为AH / AL、BH / BL、CH / CL、DH / DL;对其中某8位的操作,并不影响另外对应8位的数据。
所以,我们说8086有8个通用的16位寄存器,还有8个通用的8位寄存器。

*
SI――源变址寄存器(Source Index),常保存存储单元地址
*
DI――目的变址寄存器(Destination Index),常保存存储单元地址
*
BP――基址指针寄存器(Base Pointer),表示堆栈区域中的基地址
*
SP――堆栈指针寄存器(Stack Pointer),指示堆栈区域的栈顶地址
*
IP――指令指针寄存器(Instruction Pointer),指示要执行指令所在存储单元的地址。IP寄存器是一个专用寄存器。

8086CPU复位后,内容不为0的寄存器都有哪些?系统的初始地址是啥?

参考技术A 8086CPU复位后,(CS)=FFFFH,其余各寄存器的状态均为0。
要看得看你的复位是用什么实现的。如果是硬件实现的话,第一条cpu的指令的起始地址在rom,如果是软件实现的话,你的软件复位是针对cpu还是整个系统,如果是针对cpu复位,那第一条指令的起始地址可能是ram,如果是对整个系统复位,那第一条cpu的指令的起始地址在rom。
参考技术B Reset引脚上为高电平时,引起cpu复位,复位后cpu内部的段寄存器,标志寄存器,指令指针ip及指令队列都将被清零,只有段寄存器cs被设置为FFFFH。一旦复位完成,cpu将从CS:IP值为FFFFH:0000H,即物理地址为0FFFF0H的地址开始执行程序。

以上是关于通用寄存器都有哪些?的主要内容,如果未能解决你的问题,请参考以下文章

x86指令集都有哪些劣势

cpu中都有哪些寄存器资源,他们的初始值分别是多少

X86指令集的内容都有哪些?

通用寄存器和专用寄存器有啥区别和联系?

通用寄存器是

8086CPU复位后,内容不为0的寄存器都有哪些?系统的初始地址是啥?