请问直接寻址和寄存器间接寻址有什么关系呢

我发现直接寻址的操作数是放在存储器中,寄存器间接寻址的操作数是放在寄存器中,其他还有什么区别呢,谢谢

所谓直接寻址,是指数据包发送时,需要指定数据包的目的地址值。这里的目的地址值分为2种:

1)64-bit地址,又称为MAC地址或IEEE地址。
每个ZigBee节点都应该有全球唯一的64位IEEE地址。这个地址需要向IEEE组织申请才能使用。通信时,将待发送的数据包的目的地址设为此64位IEEE地址,从而实现数据包的正确投递。

2)16-bit地址,即网络地址,或称为短地址。当一个ZigBee网络形成后,ZigBee网络内的每个节点,都会分配到一个16位的网络地址。通信时,将待发送的数据包的目的地址设为此16位网络地址。

而间接寻址,是使用本地绑定表(local binding table)的方式。协调器或者数据包发送方会保存这个绑定表,而这个绑定表能保存多个目的地。当需要传输数据包时,通过查询绑定表进行投递。

计算机是通过执行指令序列来解决问题的,因而每种计算机都有一组指令集提供给用户使用,一台计算机所具有的全部指令就称为该计算机的指令系统,不同的微处理器对应的指令系统也不全相同。
计算机中的指令由操作码字段和操作数字段两部分组成,操作码字段指示计算机所要执行的操作,而操作数字段则指出在指令执行操作的过程中所需要的操作数。指令的操作码字段在机器中的表示比较简单,只需对每一种操作指定确定的二进制代码就可以了;指令的操作数字段的表示比较复杂,操作数可以存放在指令本身(立即数)、寄存器中、存储器中和外设端口中,根据存放的位置不同,分为三类操作数:立即数操作数、寄存器操作数、存储器操作数。所谓寻址方式就是寻找操作数和操作数地址的方式。
操作数字段可以有一个或两个,通常称为一地址或二地址指令。大多数运算型指令都是双操作数指令,指令中的两个操作数分别称为源操作数和目的操作数。
下面的例子都是以16位机来讲解的。对于32位寄存器的使用可查看其他资料。

1.立即数寻址
操作数直接存放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段里,这种操作数称为立即数。立即数可以是8位和16位的。如果是16位数,则高位字节存放在教高地址单元中,低位字节放在教低地址单元中。
立即数寻址方式常用于给寄存器赋值,并且只能作为源操作数。

MOV AL,25 ;将25送入寄存器AL,即(AL)=19H
MOV AX,2076H ;将十六进制2076送入AX,即(AH)=20H,(AL)=76H
MOV BL,'A' ;将41H送BL寄存器
MOV DL,100B ;将二进制100送入DL,即(DL)=4

立即数后跟字符'H'表示为十六进制数,'B'表示为二进制数,'D'或省略表示十进制数。每行只能书写一条执行命令,分号后内容为注释部分。

2.寄存器直接寻址
操作数存放在寄存器中,用指令指定寄存器号,这种操作数称为寄存器操作数。对于16位操作数,寄存器可以是AX、BX、CX、DX、SI、DI、SP和BP;对于8位操作数,寄存器还可以是AL、AH、BL、BH、CL、CH、DL和DH。

MOV BX,AX ;将寄存器AX的内容送入BX
MOV DH,CL ;将寄存器CL的内容送入DH

3.存储器直接寻址
存储器直接寻址方式下,有效地址EA(存储器操作数在存储器中的偏移地址,也称为偏移量)直接包含在指令中,它存放在代码段中指令操作数之后,但操作数一般在数据段中,所以必须先求出操作数的物理地址(DS)*16+EA,然后再访问存储器才能取得操作数。

MOV AX,[1000H]
若DS=3000H,则把3000H*16+1000H=31000H里的内容送入AX,假设:

________
| 50 |---31000H 则把50H送入AL,63H送入AH,最终(AX)=6350H。
|--------|
|___63___|---31001H

如果要访问的操作数不在数据段中,则必须指定段名。

MOV BX,ES:[1200H] ;把附加段ES里,偏移量为1200H单元里的内容送入BX。

4.寄存器间接寻址
操作数的有效地址EA在寄存器中,可以用来指定存储器操作数有效地址的寄存器只有基址寄存器BX、BP和变址寄存器SI、DI。如果指定的寄存器是BX、SI或DI,则操作数默认在数据段中;若指定为BP,则默认在堆栈段中。如果要访问的存储器操作数不在默认的段中,则应指定段前缀。操作数物理地址如下:
物理地址=16*(DS)+(SI/DI/BX)
or 物理地址=16*(SS)+(BP)

MOV AX,[BX]
若(AX)=1234H,(DS)=3000H,(BX)=1000H,(31000)=5678H
则执行结果应该是(AX)=5678H

MOV AH,[BX]
若(AX)=1234H,(DS)=3000H,(BX)=1000H,(31000)=5678H
则执行结果应该是(AH)=78H,(AL)=34H不变。

5.寄存器相对寻址
操作数的有效地址是指定寄存器的内容加上指令中的8位或16位偏移量。
物理地址=16*(DS)+(SI/DI/BX)+偏移量
or 物理地址=16*(SS)+(BP)+偏移量

如:MOV AX,8[SI] (或写成 MOV AX,[SI+8])
MOV BX,ES:[SI+4]

6.基址变址寻址
在这种寻址方式中,操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和。
物理地址=16*(DS)+(BX)+(SI)或(DI)
or 物理地址=16*(SS)+(BP)+(SI)或(DI)

如:MOV AX,[BX][SI] (或写成 MOV AX,[BX+SI])
MOV AX,ES:[BX][SI]

7.相对基址变址寻址
在这种寻址方式中,操作数的有效地址是一个基址寄存器内容和一个变址寄存器的内容和8位或16位偏移量相加之和。同样,当基址寄存器为BX时,默认DS作为段寄存器;当基址寄存器为BP时,则默认SS作为段寄存器。
如:MOV AX,[BP+DI+8]
MOV AX,1000[BX][SI]
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-04-11
直接是直接找到的是你要的数据,间接是先找到你数据所在位置,也就是说指针,然后指向你要的数据。仅此而已。本回答被提问者和网友采纳
第2个回答  2009-03-04
不知道不要害人。
直接寻址,告诉你的是地址,也就是地址是直接告诉你的,所以你需要的操作数是在 存储器中,存放的地址就是指令告诉你的地址。
寄存器间接寻址,寄存器中存放的是地址,也就是说地址不是直接告诉你,而是存放在寄存器中,所以说操作数也是在存储器中,地址就是寄存器中的数。
比如 mov ah,[1000h] 这个源操作数是直接寻址,就是将数据段中有效地址为1000h中的数据传给ah。
而 mov ah,[bx],如果 bx=1000h,那么这条指令的作用和上面的指令作用一样。不过由于地址是在寄存器中,而不是直接给出,所以称其为寄存器间接寻址。 需要的操作数,同样存放在存储器中。

请问直接寻址和寄存器间接寻址有什么关系呢
而间接寻址,是使用本地绑定表(local binding table)的方式。协调器或者数据包发送方会保存这个绑定表,而这个绑定表能保存多个目的地。当需要传输数据包时,通过查询绑定表进行投递。计算机是通过执行指令序列来解决问题的,因而每种计算机都有一组指令集提供给用户使用,一台计算机所具有的全部指令就称为...

寄存器间接寻址和直接寻址哪个快
直接寻址就是指令中存放的是地址,直接解析这个地址;间接寻址就只指令中存放的是地址的地址,或者是存放地址的寄存器,最慢。

什么是PLC直接寻址和间接寻址
直接寻址在程序设计中指的是数据直接存放于寄存器D内,无需额外的地址指示。而间接寻址则不同,数据存储于寄存器表示的地址中,而非寄存器内。例如,数据值为10,寄存器标记为D0,使用直接寻址时,10直接存储在D0中。采用间接寻址时,D0所存储的数值决定数据最终存放的位置。若D0值为1,则数据10实际存放...

什么是直接寻址方式,什么是间接寻址方式
指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。如 MOV BX, [1234H]二、寄存器间接寻...

什么是PLC直接寻址和间接寻址
直接寻址就是你的数据直接存放在寄存器D中。间接寻址就是你的数据存放在寄存器所表示数据的地址中。举个例子,你的数据是10,寄存器用D0,如果用直接寻址,那么10就直接存储到D0中。如果用间接寻址,那么D0里面的数字是多少,你最后存储的地址就是多少,比如D0里面是1,那么10就放在D1 里,如果D0...

计算机里的寻址到底是指什么,有直接寻址,间接寻址等方式,有什么作用...
寻址: CPU在内存或硬盘中找需要的数据。直接寻址和间接寻址中的最大不同就是寻址的速度。他们是用不同的寄存器存储+算法来完成的。

直接寻址和间接寻址有何区别?
1、直接寻址:操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。2、间接寻址:在直接寻址的基础上面建立起来的,也就是直接寻址得到的数据是一个地址,通过这个地址找到最终的数据,也就是两次寻址,第一次...

简述直接寻址,间接寻址
直接寻址的对象是显式的,可能是个直接数代表内存地址,或者寄存器名;间接寻址是隐式的,直接操作数是一个寄存器,这个寄存器里的值才是真正的读写地址。比如,奥巴马是黑人,这里奥巴马就是直接寻址;现任美国总统是黑人,这就是间接寻址了。

寄存器直接寻址和间接寻址的区别???
寄存器直接寻址:从寄存器中直接寻找数据对应的地址!寄存器间接寻址:在寄存器中存储的不是目的数据的地址而是数据地址的间接地址!其实只先明白什么是直接寻址和间接寻址。只是在寻址的方式上先通过寄存器。

PLC中为什么要间接寻址直接寻址不得吗?求解释
因为用样的情况下,用间接寻址比直接寻址快。用间接寻址1句话的场合,如果用直接寻址,可能无法完成,或者能完成可却要写几十几百几千句。存储器间接寻址址给定格式是:址标识符+指针。指针所指示存储单元中所包含数值,就是址确切数值单元。存储器间接寻址具有两个指针格式:单字和双字。单字指针是一个...

相似回答