❶ 计算物理地址
不知道这是不是你想要的。
计算比较急,你最好验证一下代入数相加的结果有没有错
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
❷ 指出寻址方式并计算物理地址
第一种是指定段寄存器的方法
具体的物理地址是通过ES和BX来计算的,计算方法和DS:BX的方法一样,只不过是把DS换成了ES,没有加段指示前缀的话默认为DS
第二种是MASM提供的一种寻址方式
其实映射到指令的话就是"基址+偏移量"的寻址方式,SI是基址,VAL在这里代表偏移量,这条指定对应的指令是:
MOV AX,[SI+50H]
第三种和第二种类似
其实就是"基址+变址+偏移量"的寻址方式
具体的数值自己计算吧
❸ 微机原理寻址当中,物理地址=段寄存器x16+寄存器中的16 是指的什么,而且每次算出的数都是 x10的结果。。。
不过就是:把段寄存器内容,左移四位,而已。
整这么啰嗦干嘛!
二进制,左移一位,右边添一个 0,就是乘以 2;
二进制,左移二位,右边添一个 0,就是乘以 4;
左移三位,就是乘以 8;
左移四位,就是乘以 16。
乘什么乘!
填上四个二进制的 0,(或一个16进制的 0),就完事了。
CPU,它也就是左移四位,添上 0 就完了。
哪里用了什么乘法!
在此处说到乘法,都是教师自己在那瞎编乱造,骗学生的。
❹ 已知当前段的寄存器的基址怎样找物理地址末地址与首地址
段寄存器的内容左移4位(我说的是二进制),就是这个段的首地址了,在这个基础上加上0ffffh,就是这个段的末地址。因为物理地址=段基地址左移4位+段内偏移地址,其中段内偏移地址是16位。
❺ 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。具体的忘了,你可以看一下王爽的书,里面有的