❶ 匯編語言中,給出定址,如何求物理地址
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。