组成原理之指令寻址方式和操作数寻址方式图示

指令包括操作码和操作数两部分。指令的寻址方式即指令如何寻找下一条指令的:分为顺序寻址方式和跳跃寻址方式,其中顺序寻址方式是根据PC给出下一条要执行指令的地址,跳跃寻址方式是从执行指令中获取下一条指令的地址,之后更新PC数据,找到下一条要执行的指令。

顺序寻址方式:

如图

程序计数器+1可得到下一条指令

如图  

跳跃寻址方式

如图

由指令3可以知道向下条指令为6,程序计数器的值变为6

如图

下面介绍操作数寻址方式,前面提到指令有操作码和操作数组成,一条指令中的操作数可以通过操作数地址寻找。寻找的方式有一下几种。

首先说明,一种单地址指令的结构如下所示,其中用X,I,A各字段组成该指令的操作数地址。其中形式地址也成为偏移量。

操作码 变址 间址 形式地址
OP X I A

接下来就是关于7中操作数寻址方式的图示

隐含寻址方式,操作数存在专用寄存器中

立即寻址方式,操作数存在去该指令中

直接寻址操作数存在存储器中,指令中只有操作数的形式地址

间接寻址方式,操作数存在存在存储器中,但指令中的形式地址要通过存储器中的地址找到操作数。

寄存器寻址,操作数存在寄存器组中

偏移量寻址,指令需要通过操作码的隐式地址和显式地址协作寻找存储器中的操作数。

下面是堆栈寻址

这里只做简单描述,深入学习需要另寻资料。有错误的地方还请雅正。

时间: 2024-10-16 01:03:19

组成原理之指令寻址方式和操作数寻址方式图示的相关文章

计算机组成:解疑补漏之MOV指令与操作数寻址方式

MOV指令以及操作数的寻址方式 偏移地址在指令中,操作数在内存中 MOV指令默认的操作数存储在DS中(数据段寄存器):此时采用段加偏移. 偏移地址在寄存器中,操作数在内存中 能够存储偏移地址的寄存器:BX.BP.SI.DI(此时用作数据寄存器) 在段寄存器没有指定的情况下,BP对应SS:BX.SI.DI对应DS. 比如: MOV AX, [BP] #源操作数的物理地址:SS*16 + BP 第二种情形的延申 比如: MOV AX, [BP+15H] #源操作数的物理地址:SS*16 + BP +

ARM 内核 汇编指令 的 8种 寻址方式

str: store register ->指令将寄存器内容存到内存空间中, ldr:  load register 将内存内容加载到通用寄存器, ldr/str 组合来实现ARM CPU 和内存数据的 交换! 1.mov r1,r2;  //寄存器r2的内容复制到r1中,寄存器寻址方式,(r1,r2 ARM中的通用寄存器) 2.mov r0,#0xFF00; //数0xFF00复制到r0中,立即寻址方式,(#代表后面跟一个数) 3.mov r0,r1,lsl #3; //将r1中的内容左移三位

计算机组成原理--MIPS指令的表示和逻辑操作

计算机组成原理--10.5 1.计算机中指令的表示 前言: 指令在计算机内部是用高低电平表示的,并且看上去和数的表示是一样的.实际上,指令的各个部分都可以看成数,将这些数拼在一起就构成了指令.(实际上指令和数据的存储确确实实是一样的--都是二进制数) 在接下来的学习中需要用的部分的寄存器,所以在这里先做简单引入. 寄存器$s0~$s7映射到寄存器16~23,寄存器$t0~$t7映射到寄存器8~15.(这里s和t都只是标号,在之后的学习中我们会知道,s代表保留寄存器,t代表临时寄存器) 指令格式:

8086 寻址方式

(段超越前缀用来改变默认的段寻址,通常内址寻址是数据段或者堆栈段. 但是可以在指令前加上段超越前缀,来访问其他段的数据.比如 di,si,bx 的段默认位是 ds,bp 默认为 ss.) 1.立即寻址方式: 操作数包含在指令中,跟在操作码后存在在代码段. 立即数寻址方式主要用来给寄存器和存储单元赋值,因此这种寻址方式不能用于单操作数指令: 若用于双操作数指令,也只能用于源操作数字段,不能用于目的操作数字段. 比如 "mov ax, 1111H". 2.寄存器寻址方式: 不需要通过访问存

汇编语言之寻址方式

与数据有关的寻址方式 下面以数据传送指令MOV为例来说明.其汇编格式为:MOV  目标, 源 1.立即寻址方式(immediate addressing) 操作数直接包含在指令中,紧跟在操作码之后的寻址方式称为立即寻址方式,把该操作数称为立即数. MOV  AL, 6                       ;(AL)=6 MOV  AX, 3064H             ;(AX)=3064 2.寄存器寻址方式(register addressing) 操作数直接包含在寄存器中,由指令

2.4 ARM寻址方式

所谓的寻址方式就是处理器指令中给出的信息来找到指令所需要的操作数的方式 1. 立即数寻址 立即数寻址,是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数,这个操作数被称为立即数,对应的寻址方式就叫做立即数寻址例如指令如下 ADD????R0,????R0,????#0x3f;????R0?R0+0x3f 在以上两条指令中,第一个源操作数即为立即数,要求以"#"为前缀. 2. 寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是一种执行效率较高

ARM寻址方式

寻址方式: 所谓寻址方式就是处理器根据指令中给出的信息来找到指令所需操作数的方式. 1.立即数寻址 2.寄存器寻址 3.寄存器间接寻址 就是寄存器中存放的是操作数在内存中的地址 例如以下指令: LDR R0, [R2]:R0← [R2] 以寄存器R2的值作为操作数的地址,在存储器中(内存)取得一个操作数 4.基址变址寻址 基地址保存在R1中. 操作数在内存当中,比如R1数值为1000 则 操作数在内存中的地址是 1000+4 5.相对寻址 与基址变址寻址方式相类似,相对寻址:PC指针的当前值为基

9.ARM寻址方式

9.ARM寻址方式 1.立即数寻址 ????立即数寻址,是一种特殊的寻址方式,操作数本身就是在指令中给出.只有取出指令就取到了操作数.这个操作数就称为立即数,对应的寻址方式就是立即数寻址方式.例如: ADD R0,R1,#0X45;这汇编的意思:R1+0x45->R0 ? 在以上两条指令中,第二个源操作数,是立即数,要求以"#"为前缀. 2.寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是一种执行效率较高的寻址方式. 该指令的执行效果是将寄存器R1和R2的内

段寄存器和8种地址寻址方式

段寄存器是因为对内存的分段管理而设置的. 16位CPU有四个段寄存器,其程序可同时访问四个不同含义的段,引用方面有如下规定:1. 取命令:段寄存器CS指向存放程序的内存段,IP是用来存放下条待执行的指令在该段的偏移量,把它们合在一起可在该内存段内取到下次要执行的指令.2. 取堆栈:段寄存器SS指向用于堆栈的内存段,SP是用来指向该堆栈的栈顶,把它们合在一起可访问栈顶单元.另外,当偏移量用到了指针寄存器BP,则其缺省的段寄存器也是SS,并且用BP可访问整个堆栈,不仅仅是只访问栈顶.3. 取数据:段