当前位置:首页 > 生活> 地址寄存器用于存放当前执行的指令码(地址寄存器有哪些)

地址寄存器用于存放当前执行的指令码(地址寄存器有哪些)

地址寄存器用于存放当前执行的指令码(地址寄存器有哪些),本文通过网络平台数据整理了地址寄存器用于存放当前执行的指令码(地址寄存器有哪些)的相关信息,详细内容请看下文。


大家好,地址寄存器用于存放当前执行的指令码相信很多的网友都不是很明白,包括地址寄存器有哪些也是一样,不过没有关系,接下来就来为大家分享关于地址寄存器用于存放当前执行的指令码和地址寄存器有哪些的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

  1. 在AT89S51单片机中,堆栈指针寄存器始终存放什么的地址
  2. 地址寄存器原理
  3. 指令的地址结构共有几种类型
  4. 地址寄存器有哪些

在AT89S51单片机中,堆栈指针寄存器始终存放什么的地址

MCS-51单片机汇编语言中,没有SP这条指令,只有针对SP操作的指令。51单片机中SP是堆栈指针寄存器,存放着当前堆栈地址。堆栈用于存储子程序调用、中断程序调用时程序返回的地址,或者用来临时保存某一寄存器的值。

除了初始化堆栈时直接给SP赋值,SP显式存在,其它的对SP有影响的指令,对SP的操作都是隐式的,就是说SP并不出现在指令操作数当中。

例如:MOVSP,#80H;初始堆栈指针,(SP)=80HLCALLXXXX;调用XXXX处的子程序,下一条指令PC值压栈,(SP)=(SP)+2NOP;子程序返回时,RET指令从堆栈中弹出PC值,所以会返回到这里,(SP)=(SP)-2PUSHACC;累加器A的内容压栈保存,(SP)=(SP)+1POPB;堆栈内保存的累加器A的内容弹出到B寄存器中,(SP)=(SP)-1使用PUSH、POP指令使用堆栈,要注意进出栈的匹配,否则将引起不可预期的后果。

另外如果把30H赋给了SP,称为设置栈底。以后:PUSHACC,就把ACC的内容存放到31H单元;PUSHPSW,就把PSW的内容存放到32H单元;PUSHB,就把B的内容存放到33H单元。……弹出时,要用POP指令。利用堆栈,就不用管具体的内容存放在什么单元了,SP会自动管理。

地址寄存器原理

地址寄存器的原理是指存放指令地址的寄存器,又称指令计数器。控制器根据指令计数器中存放的指令地址,从内存贮器中将指令取出到指令寄存器中,然后对该指令进行分析,且执行之,同时在指令计数器中自动形成下一条指令的地址。

计算机工作时,一般根据指令的排列顺序,逐条依次执行。因此,当执行程序时,只要将程序的第一条指令的地址送入指令计数器。

指令的地址结构共有几种类型

指令的地址结构共有三种类型的指令格式:

(1)三地址指令Three-AddressInstruction格式:OPCODEA1A2A3其中:OPCODE—操作码,A1—第一操作数地址,A2—第二操作数地址,A3—操作结果的存贮地址。其操作表达式为:(A1)OP(A2)→A3

(2)两地址指令Two-AddressInstruction格式:OPCODEA1A2其操作表达式为:(A1)OP(A2)→A1目的操作数。

(3)一地址指令One-AddressInstruction格式:OPCODEA一地址指令常被称为“单操作数指令”,实际上它有两种情况。一是参与操作的只有一个操作数,在对地址A所指定的操作数执行OPCODE规定的操作后,产生的结果仍存回到该地址中。

地址寄存器有哪些

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

2、变址寄存器32位CPU有2个32位通用寄存器ESI和EDI。其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。寄存器ESI、EDI、SI和DI称为变址寄存器(IndexRegister),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。

变址寄存器不可分割成8位寄存器。

作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。

它们可作一般的存储器指针使用。

在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。

3、指针寄存器32位CPU有2个32位通用寄存器EBP和ESP。其低16位对应先前CPU中的SBP和SP,对低16位数据的存取,不影响高16位的数据。寄存器EBP、ESP、BP和SP称为指针寄存器(PointerRegister),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。

指针寄存器不可分割成8位寄存器。

作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。

它们主要用于访问堆栈内的存储单元,并且规定:BP为基指针(BasePointer)寄存器,通过它减去一定的偏移值,来访问栈中的元素;SP为堆栈指针(StackPointer)寄存器,它始终指向栈顶。说明:因栈的生长方向是从高地址向低地址生长,所以,进栈时,sp自减;出栈时,sp自增;

4、段寄存器段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。5、指令指针寄存器32位CPU把指令指针扩展到32位,并记作EIP,EIP的低16位与先前CPU中的IP作用相同。指令指针EIP、IP(InstructionPointer)是存放下次将要执行的指令在代码段的偏移量。

在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。所以,在理解它们的功能时,不考虑存在指令队列的情况。

在实方式下,由于每个段的最大范围为64K,所以,EIP中的高16位肯定都为0,此时,相当于只用其低16位的IP来反映程序中指令的执行次序。6、标志寄存器

OK,关于地址寄存器用于存放当前执行的指令码和地址寄存器有哪些的内容到此结束了,希望对大家有所帮助。


以上就是小编今天整理的关于地址寄存器用于存放当前执行的指令码(地址寄存器有哪些)这个话题的详细内容,更多相关信息请关注锦洛洛资讯。

版权保护: 本文由 锦洛洛资讯 原创,转载请保留链接: https://www.lyqwsj.com/shenghuo/223502.html