本文目录一览

1,寄存器间接寻址方式的指令是

寄存器间接寻址指:操作数在存储器中,偏移地址在寄存器(SI,DI,BX,BP)中,格式如MOVAX,[BX]
可以自己 写了汇编程序,然后 汇编一下,用debug之类的工具去调试。很容易看到结果的。

寄存器间接寻址方式的指令是

2,举例简述寄存器间接寻址的四种情况

mov ax,[bx]mov ax,[si]mov ax,[di]mov ax,[bp]前面3中段地址是DS,最后一种段地址是SS
物理地址=20000h+1000h=21000h寄存器间接寻址,bx存放的是操作数的偏移地址。上面计算出来的物理地址,就是操作数所在的具体地址。上面的计算,是拿1000h当做地址,并没有拿1000h作为操作数。

举例简述寄存器间接寻址的四种情况

3,寄存器间接寻址方式中PADS16SI 为什么要乘以16

Ds是一个十六进制数,16是个十进制数,DS*16其实是DS*10(16的十六进制为10),也就是将16位的地址变为20位地址,也就是物理地址
Ds是一个十六进制数,16是个十进制数,DS*16其实是DS*10(16的十六进制为10),也就是将16位的地址变为20位地址,也就是物理地址再看看别人怎么说的。
寄存器相对寻址:操作数的有效地址是一个基址寄存器(BX,BP)或变址寄存器(SI,DI)的内容加上指令中给定的8位或16位位移量之和PA = DS*16+BX/SI/DI+位移量PA = SS*16+BP+位移量

寄存器间接寻址方式中PADS16SI 为什么要乘以16

4,寄存器间接寻址

我们学习的微机原理都是说的16位的,那么20位的物理地址怎么寻之呢?必须偏移4位才能出来20位,二进制为1111=0FH=16十进制,然后分段读取即:物理地址=段寄存器的内容*16+偏移地址ds是数据段寄存器,ds段寄存器的内容*16相当于左移4位变为20位再在低端16位上加上16位的偏移地址(也叫有效地址),便可得20位的物理地址2000H*0FH=20000H+1000H=21000H数据段起始地址
物理地址=20000h+1000h=21000h寄存器间接寻址,bx存放的是操作数的偏移地址。上面计算出来的物理地址,就是操作数所在的具体地址。上面的计算,是拿1000h当做地址,并没有拿1000h作为操作数。

5,汇编语言中寄存器间接寻址和寄存器直接寻址有啥本质的区别

用C语言作比:直接是var=EAX间接是var=(*EAX)、或EAX=&var所以本质区别就是:直接EAX存放的是“数据值”、间接EAX存放的是“数据地址”
寄存器直接寻址:操作数,在寄存器里面。寄存器间接寻址:操作数,在存储器里面。
MOV AX,[2000H] 就是属于直接寻址 MOV BX,2000H MOV AX,[BX] 属于寄存器间接寻址这两条指令实现功能一样 你应该可以看出它们的区别了吧一个是直接传送,另一个显示寄存到一个寄存器中,然后再传送
这不是段地址加偏移地址来达到1mb的寻址范围吗,要找到90300h的地方就用9000h和300h两个数,9000h*16d=90000h再加300h

6,寄存器间接寻址和直接寻址哪个快

你从广州到北京,是直达飞机快还是在青岛转机快? 因为间接寻址还要进行一次地址的处理(解析),所以会慢了一拍。
寄存器间接寻址是把地址放在另外一个寄存器中,根据这个寄存器中的数据决定该到哪个单元中取数据,可访问片内RAM低128字节空间和片外RAM的256字节空间。直接寻址是直接使用所在单元的地址找到操作数,可访问片内RAM低128字节空间及特殊寄存器SFR。所以访问片内低128字节空间时,速度差不多。寄存器间接寻址访问片外RAM的256字节空间就慢一些。
当操作数地址在寄存器中,应该采用寄存器间接寻址;当操作数在寄存器中,应该采用寄存器寻址。一个是直接传送,另一个显示寄存到一个寄存器中,然后再传送所以寄存器直接寻址更快
立即寻址就是指令当中自带数据,直接读取,最快;直接寻址就是指令中存放的是地址,直接解析这个地址;间接寻址就只指令中存放的是地址的地址,或者是存放地址的寄存器,最慢。
寄存器直接寻址,是指寄存器上的内容即为操作数 而寄存器间接寻址,是指寄存器上的内容为操作数的地址,从内存当中取出该地址的数才是操作数。

文章TAG:寄存器间接寻址  寄存器间接寻址方式的指令是  
下一篇