
单片机寄存器 关于 “立即寻址” 这名词我搞不懂,为什么这么叫?
我先来自答:立即寻址就是直接操作的具体的数字,把立即数赋予寄存器!所以这种话就不要回答了。
我问这个问题,是想问:这个叫法中有“寻址” 2个字,
那即然是寻址,在这把立即数赋予寄存器时,倒底寻了什么“址”?
如果没有做寻址的操作,为什么叫“立即寻址”?而却不叫“立即赋值”?
再说清楚一点:
我要问的是:即然这个叫法中有“寻址” 2个字,
那即然是叫做寻址,在发生“直接操作立即数”这一动作时,CPU倒底寻了什么“址”?
如果没有做寻址的动作,为什么又叫作“立即寻址”?而不叫“立即传输”“立即操作”?倒底寻了哪门子的址?
好好,我再补充一下:立即寻址就是直接操作的具体的数字,这个我明白。我所需要的不是这个解释,我要问的是:直接操作具体数字,倒底在这个过程中寻了什么“址”???请回答我这个。
注意:如果又是来解释立即寻址是什么意思的,直接打住,别答了,我没问你这个问题!!
我要问的是:立即寻址,即然是这样的叫法,那倒底在这个过程中寻了什么“址”???
我要问的是:立即寻址,即然是这样的叫法,那倒底在这个过程中寻了什么“址”???
我要问的是:立即寻址,即然是这样的叫法,那倒底在这个过程中寻了什么“址”??? 展开
能够对呆板的概念进行探究,值得赞赏。
“立即寻址就是直接操作的具体的数字,把立即数赋予寄存器”
这个定义是错误的。如果有谁这么告诉你,那就该打板子。
8051指令集的寻址方式分为以下5种:
1、直接寻址(Direct Addressing),就是说指令中包含的操作数是一个8位的地址,单片机直接从这个地址取出操作数。注意这8位地址只能是最大256字节的片内直接寻址空间。例如:
ADD A, 7FH
2、间接寻址(Indirect Addressing),就是说指令中包含的操作数是一个寄存器,这个寄存器里面包含的是一个操作数的地址、而不是其内容。单片机需要先取出寄存器的内容,再根据寄存器内容找到操作数所在的地址,并从该地址取出操作数。例如:
ADD A, @R0
间接寻址一般会利用到8位的R0、R1、SP,也可能会利用到16位的DPTR。
3、寄存器寻址(Register Addressing),就是说指令中包含的操作数是当前Regbank的寄存器。这种指令中寄存器通过3个位来指定,因此整条指令可以挤在1个字节里,这一点与直接寻址是不同的,也因此提高了代码效率。例如:
ADD A, R7
4、立即数指令,也就是直接从程序存储器中读出的常数。例如:
MOV A, #100
6、索引寻址,一般来说只有程序存储器能够通过索引方式寻址,要么利用DPTR、要么利用PC。另一种常见的索引寻址则是各种条件跳转,即利用指令所在的基地址加上累加器的偏移进行跳转。
好好好,你终于找到了点毛病,但是求你别回答这些无用的东西行吗?立即寻址就是 直接操作的具体的数字,这个我明白。我要的不是这个解释,我要问的问题是:直接操作具体数字,即然这个就叫“立即寻址”,那倒底在这个操作过程中寻了什么“址”???请回答我这个,立即寻址,倒底寻了什么址?
立即数操作,你以为立即数是从哪里来的?
是从程序存储器中读出的,这也是通过对程序存储器的寻址才能实现的!
任何数据都不是从天上掉下来的。

2023-06-12 广告