❶ 汇编语言中,给出寻址,如何求物理地址
16位的方法 楼下说了
段基地址*16+段内偏移
32位是平坦寻址,直接给出32位虚拟地址,要找到物理地址那在ring3权限是不可能的
❷ 汇编语言 物理地址问题
这个答案是错误的,正确的是:7E814H。
1、先计算数据区末字的偏移地址
16个字占20H字节的内存空间,0DDF6H+20H=DE16H,这是末字数据后面的偏移地址,末字的偏移地址为DE16H-2=DE14H。
2、再计算末字的物理地址
物理地址=段地址*10H+偏移地址=70A0H+DE14H=7E814H。
❸ 汇编语言SI、DI、BX、BP、SS、DS分别是什么怎样根据这些求物理地址
1.汇编语言 SI DI BX BP SS DS 是什么
SI: 16位寄存器,源变址寄存器
DI: 16为寄存器,目的变址寄存器
BX: 16位寄存器(可分成2个8位寄存器BH,BL),基址寄存器
BP: 16位寄存器,基址指针寄存器
SS : 16位段寄存器,作用是存放当前堆栈段的段地址,一般和SP连用
DS: 16为段寄存器, 作用是存放当前数据段的段地址
2.怎样根据这些求物理地址
上面的这几个寄存器跟求物理地址谈不上关系.
有个公式: 物理地址 = 基础地址 + 偏移地址 = CS*10H(基础地址)+ IP(偏移地址)
CS: 16位段寄存器,存放当前代码段的段地址
IP: 存放下一条要执行的指令的偏移地址
LZ如有不明白的地方,可追问
❹ x86汇编语言求物理地址算法
也没那种最初的玩泥巴的心思。指条路你自己学着走:
需要指出,此算法严格上是有缺陷的,其正确的前提是假设bx中的段地址高四位总为零,如此bx*10H就不会溢出,同时也需要加上偏移量后bx不产生溢出,这样冲从限制下的结果才是正确的。
该算法正确的前提是所得的物理地址高四位都是零,所以就不需多考虑,只需输出0XXXXH即可。
至于将ax或内存的二进制以十六进制字符输出,网络上有许多现成的简单算法,既然你都没兴趣自己尝试,那就自己去找找吧,阿门。。。
真要得到任意二十位偏移物理地址,需要用到dx:ax
lds ax,list
mov bx,10H
xor dx,dx
mul bx
;至此得到段地址的20位物理地址存于dx:ax中,其中高12位始终为零也无使用意义
mov cx,offset list
add cx,2
;至此得到目标内存单元的偏移量
add ax,cx
adc dx,0
;至此得到目标内存单元的20位物理地址存于dx:ax的低20位
;输出dx:ax的低20位即可,阿门。。。。
❺ 汇编语言寻址方式以及物理地址
1,MOV
AX,OABH
立即寻址方式,0ABH直接放在代码中。
2,
MOV
AX,BX
寄存器寻址方式,1100H放在BX中,直接送AX,不需访问内存来取操作数。
3,MOV
AX,[100H]
直接寻址方式,操作数放在DS*10H+100H即20100H开始的物理内存中,送AX
4,MOV
AX,VAL
直接寻址方式,操作数放在DS*10H+3000H即23000H开始的物理内存中,送AX
5,MOV
AX,[BX][SI]
基址变址寻址方式,BX是基址寄存器,SI是变址寄存器,操作数放在DS*10H+1100H+1000H即22100H开始的物理内存中,送AX
❻ 汇编语言:SI、DI、BX、BP、SS、DS分别是什么怎样根据这些求物理地址
1.汇编语言 SI DI BX BP SS DS 是什么
SI: 16位寄存器,源变址寄存器
DI: 16为寄存器,目的变址寄存器
BX: 16位寄存器(可分成2个8位寄存器BH,BL),基址寄存器
BP: 16位寄存器,基址指针寄存器
SS : 16位段寄存器,作用是存放当前堆栈段的段地址,一般和SP连用
DS: 16为段寄存器, 作用是存放当前数据段的段地址
2.怎样根据这些求物理地址
上面的这几个寄存器跟求物理地址谈不上关系.
有个公式: 物理地址 = 基础地址 + 偏移地址 = CS*10H(基础地址)+ IP(偏移地址)
CS: 16位段寄存器,存放当前代码段的段地址
IP: 存放下一条要执行的指令的偏移地址
LZ如有不明白的地方,可追问
❼ 求详解啊。汇编算物理地址啊。很急很急!
1) MOV AX, ES:[1000H] AX=9ABCH 地址:31000H
算法:ES*10H+1000H 声明的段寄存器ES
2) MOV AX, [BX] AX=3412H 地址:21000H
算法:DS*10H+BX 默认段寄存器DS
3) MOV AX, [BX][SI] AX= ? 地址:21001H
算法:DS*10H+BX+SI 默认段寄存器DS
这道题是不是你哪里敲错了,你题中没有这个21001H 地址
4) MOV AX,[BP+DI] AX=9A78H 地址:41002H
算法: SS*10H+BP+DI 默认段寄存器SS
方括号里面代表地址,比如 mov ax,[bx] 就等于 mov ax,[1000h],冒号代表段前缀,冒号前面的是段寄存器,将以指明的段寄存器寻址,段寄存器 * 10H + 后面的地址 即是物理地址,如果没有指明段前缀,将以默认的段寄存器寻址,BX,SI,DI 这3个寄存器默认的段寄存器是 DS,BP的默认段寄存器是SS
❽ 汇编语言 物理地址
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。[1]
❾ 汇编 debug 物理地址
你悟到的没错啊,在汇编语言里段地址和偏移地址与物理地址有如下关系
假设段地址为0001
偏移地址为0000
那么物理地址为
0001
+
0000
=00010
这个物理地址对应的内存正是2662H
答案是正确的喽
补充一下,一个物理地址可以有很多种段地址和偏移地址的组合,
比如
00010
可以是
0000和0010的组合,也可以是
0001和0000的组合
❿ 汇编语言求偏移地址物理地址
段地址是:5000H。
偏移地址:4000H。
物理地址是:54000H。