㈠ 微机原理寻地址方式和求物理地址。
mov es:[si], ax 中目的操作数为 寄存器间接寻址,其物理地址=es*16(即左移4位)+si=20000h+0200h=20200h 。
从已有条件看,ax 为源操作数,但其 未知。
㈡ 寄存器直接寻址和间接寻址的区别
一、方式不同
1、直接寻址:在指令格式的地址的字段中直接指出操作数在内存的地址。
2、间接寻址:指令地址字段的形式地址D不是操作数的真正地址,而是操作数地址的指示器,或者说是D单元的内容才是操作数的有效地址。
二、特点不同
1、直接寻址:操作数的地址直接给出而不需要经过某种变换,在指令中直接给出参与运算的操作数及运算结果所存放的主存地址,即在指令中直接给出有效地址。
2、间接寻址:需要以寄存器符号的形式来表示,且在寄存器名称前面加上间接寻址符号“@”。
三、原理不同
1、直接寻址:操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。
2、间接寻址:在直接寻址的基础上面建立起来的,也就是直接寻址得到的数据是一个地址,通过这个地址找到最终的数据,也就是两次寻址,第一次得到的是地址,第二次才是目标数据。
㈢ 指出寻址方式并计算物理地址
第一种是指定段寄存器的方法
具体的物理地址是通过ES和BX来计算的,计算方法和DS:BX的方法一样,只不过是把DS换成了ES,没有加段指示前缀的话默认为DS
第二种是MASM提供的一种寻址方式
其实映射到指令的话就是"基址+偏移量"的寻址方式,SI是基址,VAL在这里代表偏移量,这条指定对应的指令是:
MOV AX,[SI+50H]
第三种和第二种类似
其实就是"基址+变址+偏移量"的寻址方式
具体的数值自己计算吧
㈣ 立即寻址方式中物理地址值怎么算求解答
你说的是汇编里面的立即数寻址吧。即 MOV EAX,0FFH之类的
好像不会涉及到物理地址,因为这个数0FFH是在代码段中的,不是在内存中的。就是说在OFFH中不存在物理地址。
㈤ 计算物理地址
不知道这是不是你想要的。
计算比较急,你最好验证一下代入数相加的结果有没有错
ADD AX,[1000H] ;直接寻址方式EA=DS*10H+1000H=2000H*10H+1000H=21000H
MOV AL,[BX+SI] ;基址加变址寻址方式EA=DS*10H+BX+SI=2000H*10H+0100H+00A0H=201A0H
INC CX ;寄存器寻址方式 CX
MOV AX,[BX+10] ;寄存器相对寻址方式EA=DS*10H+BX+10=2000H*10H+0100H+10H=20110H
MOV AX,[BX] ;寄存器间接寻址方式EA=DS*10H+BX=2000H*10H+0100H=20100H
MOV AX,0ABH ;立即寻址方式EA=DS*10H+0ABH=2000H*10H+0ABH=200ABH
MOV AX,[BX+SI] ;基址加变址寻址方式EA=DS*10H+BX+SI=2000H*10H+0100H+00A0H=201A0H
MOV AX,[100H] ;直接寻址方式 EA=100H
MOV AX,[BP] ;寄存器间接寻址方式EA=DS*10H+BP=2000H*10H+0010H=20010H
MOV AX,VAL[BX] ;寄存器相对寻址方式EA=DS*10H+VAL+BX=2000H*10H+0050H+0100H=20150H
㈥ 8086如何计算的物理地址
8086中含有存储器。存储器中每一个单元的地址可以用两种方法表示:
1.逻辑地址:其表达形式为“段地址:段内偏移地址”。
2.物理地址:CPU与存储器进行数据交换时在地址总线上提供的20位地址信息称为物理地址。
物理地址=段地址×10H+段内偏移量
注:H为16进制,CS :代码段寄存器,
㈦ 汇编语言寻址方式以及物理地址
1.直接将0ABH放入AX寄存器2.直接将BX寄存器数据放入AX寄存器3.默认寻址方式,将段地址2000H(DS寄存器)放入AX寄存器4.指定寻址方式,以BX寄存器内容为段地址SI寄存器为偏移地址的数据放入AX寄存器里。段地址加偏移地址等于物理地址,列:段地址2000H进一位等于20000H加偏移地址0001H等于物理地址20001H。具体的忘了,你可以看一下王爽的书,里面有的
㈧ 指出下列指令中的源操作数的寻址方式,并计算该操作数的物理地址(如果需要),已知(DS)=4000H,
1、立即数寻址
2、变址寻址 地址:(DS)*10H+DATA+DI=4115AH
3、基址加变址寻址 地址:(ES)*10H+(DI)+(BX)=3110AH
4、直接寻址 地址:(DS)*10H+0150H=40150H
5、寄存器寻址
㈨ 偏移地址的物理地址计算方法
8086/8088有20条地址线,它的直接寻址能力为1MB。也就是在一个系统中可以有多达1MB的存储器,地址从00000H—FFFFFH。给定任意一个20位物理地址,就可以从中取出需要的指令和操作数。但是8086/8088CPU只能进行16位运算。与地址有关的寄存器SP、IP、BP、SI、DI也都是16位的,所以对地址的运算也只能是16位的。对于8086/8088来说,无论采用哪种寻址方式,寻找操作数的范围最大是2^16,也就是64K。如何才能形成20位的物理地址呢。系统先将1MB存储器以64KB为范围分成若干段。在寻址一个具体物理地址时,由一个基本地址再加上由SP或IP等可由CPU处理的16位偏移量来形成20位物理地址。
当系统需要产生一个20位地址的时候,一个段寄存器会自动被选择。且自动左移4位再与一个16位地址偏移量相加产生所需的20位地址 。
例如:数据段DS寄存器的值=0088H
偏移地址=22H
那么生成的20位物理地址等于 00880H+22H=008A2H
㈩ 汇编语言 物理地址问题
这个答案是错误的,正确的是:7E814H。
1、先计算数据区末字的偏移地址
16个字占20H字节的内存空间,0DDF6H+20H=DE16H,这是末字数据后面的偏移地址,末字的偏移地址为DE16H-2=DE14H。
2、再计算末字的物理地址
物理地址=段地址*10H+偏移地址=70A0H+DE14H=7E814H。