A. 匯編語言中的如何尋找地址的
匯編中的定址方式很多~
(以下內容出自I《BM-PC匯編語言程序設計》)
與數據有關的定址方式
1,立即定址方式
操作數直接存放在指令中,緊跟在操作碼之後,它作為指令的一部分存放在代碼段,這種操作數成為立即數。
例:mov al,5 執行完指令後al的值為05h
2,寄存器定址方式
操作數在寄存器中,指令指定寄存器號。
例:mov ax,bx
3,直接定址方式
操作數的有效地址包含位移量的一種成分,其值就存放在中指令的操作碼之後。
例:mov ax,[2000h]
在匯編語言指令中,可以用符號地址代替數值地址。如:
mov ax,value
value為存放操作數單元的符號地址。如:
mov ax,[value]
4,寄存器間間接定址
操作數的有效地址只包含基址寄存器內容或變址寄存器內容的一種成分。
例:mov ax,[bx]
如果(DS)=2000h,(bx)=1000h
則 物理地址=20000+1000=21000h
5,寄存器相對定址方式(或稱直接變址定址方式)
操作數的有效地址為基址寄存器或變址寄存器的內容和指令中指定的位移量之和,所以有效地址由兩種成分組成。
例:mov ax,count[si]
(也可以表示為mov ax,[count+si])
6,基址變址定址方式
操作數的有效地址是一個基址寄存器和一個變址寄存器的內容之和,所以有效地址由兩種成分組成。
例:mov ax,[bx][di]
(或寫為:mov ax,[bx+di])
此類定址方式使用段跨越前綴的格式為:mov ax,es:[bx][di]
7,相對基址變址定址方式
操作數得意偶小弟值基址寄存器和一個變址寄存器的內容和指令中指定的位移量之和,所以有效地址由三種成分組成。
例:mov ax,mask[bx][si]
(也可寫為mov ax,mask[bx+si]或者mov ax,[mask+bx+si])
8,比例變址定址方式
操作數的有效地址是變址寄存器的內容乘以指令中指定的比例銀子再加上位移量之和,所以由三種成分組成。
這種定址方式與相對寄存器定址相比,增加了比例銀子,其優點在於:對元素大小為2,4,8的數組,可以在變址寄存器中給出數組元素下標,而由定址方式控制直接用比例因子把下標轉換為變址值。
例:mov eax,count[esi*4]
9,基址比例變址定址方式
操作數的有效地址是變址寄存器的內容乘以比例因子,加上基址寄存器的內容,再加上位移量之和,所以有效地址由思政成分組成。
例:mov eax,table[ebp][edx*8]
10,相對基址比例變址定址方式
操作數的有效地址是變址寄存器的內容乘以比例因子,加上基址寄存器的內容,再加上位移量之和,所以有效地址由四種成分組成。
例:mov eax.table[ebp][edi*4]
基本就這些了~想我剛學的時候雲里霧里~現在把這些打出來感覺比學的時候清晰很多了~
B. 匯編語言: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如有不明白的地方,可追問
C. 匯編語言 物理地址
匯編語言(assembly language)是一種用於電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。在匯編語言中,用助記符(Mnemonics)代替機器指令的操作碼,用地址符號(Symbol)或標號(Label)代替指令或操作數的地址。在不同的設備中,匯編語言對應著不同的機器語言指令集,通過匯編過程轉換成機器指令。普遍地說,特定的匯編語言和特定的機器語言指令集是一一對應的,不同平台之間不可直接移植。[1]
D. 匯編 debug 物理地址
你悟到的沒錯啊,在匯編語言里段地址和偏移地址與物理地址有如下關系
假設段地址為0001
偏移地址為0000
那麼物理地址為
0001
+
0000
=00010
這個物理地址對應的內存正是2662H
答案是正確的嘍
補充一下,一個物理地址可以有很多種段地址和偏移地址的組合,
比如
00010
可以是
0000和0010的組合,也可以是
0001和0000的組合
E. 匯編語言:SI、DI、BX、BP、SS、DS分別是什麼怎樣根據這些求物理地址
1.匯編語言 SI DI BX BP SS DS 是什麼x0dx0a SI: 16位寄存器,源變址寄存器x0dx0a DI: 16為寄存器,目的變址寄存器x0dx0a BX: 16位寄存器(可分成2個8位寄存器BH,BL),基址寄存器x0dx0a BP: 16位寄存器,基址指針寄存器x0dx0a SS : 16位段寄存器,作用是存放當前堆棧段的段地址,一般和SP連用x0dx0a DS: 16為段寄存器, 作用是存放當前數據段的段地址x0dx0a x0dx0a2.怎樣根據這些求物理地址x0dx0a 上面的這幾個寄存器跟求物理地址談不上關系.x0dx0a 有個公式: 物理地址 = 基礎地址 + 偏移地址 = CS*10H(基礎地址)+ IP(偏移地址)x0dx0a CS: 16位段寄存器,存放當前代碼段的段地址x0dx0a IP: 存放下一條要執行的指令的偏移地址x0dx0a x0dx0aLZ如有不明白的地方,可追問
F. 匯編語言定址方式以及物理地址
1.直接將0ABH放入AX寄存器2.直接將BX寄存器數據放入AX寄存器3.默認定址方式,將段地址2000H(DS寄存器)放入AX寄存器4.指定定址方式,以BX寄存器內容為段地址SI寄存器為偏移地址的數據放入AX寄存器里。段地址加偏移地址等於物理地址,列:段地址2000H進一位等於20000H加偏移地址0001H等於物理地址20001H。具體的忘了,你可以看一下王爽的書,裡面有的
G. 匯編語言知道物理地址怎樣得出執行結果
指令為 MOV AX, [2000H],且(DS)=3000H,則指令執行時,將32000H字單元的內容送到 AX。
也就是說,將內存32000H位元組單元的內容送到AL,將內存32001H位元組單元的內容送到AH。
你說結果是(AX)= 3412H,那是因為你的書上或題目中另外給出了32000H位元組單元的內容是12H, 32001H位元組單元的內容是34H的前提條件。
你大概是看書看得不夠仔細,沒有看到這些已知條件。
H. 匯編語言 SI DI BX BP SS DS 是什麼 怎樣根據這些求物理地址
SI、DI、BX、BP是8086CPU可用來作指針使用的寄存器,一般用來表示一個偏移量,具體的和定址方式有關。
SS、DS是段地址寄存器。
由於8086CPU是16的,而其存儲容量可達1MB,也就是20位的定址空間,因此編程時用兩個16位的地址來表示,即 段地址:偏移地址,它和實際地址,也就是物理地址的關系是:
物理地址=段地址×16+偏移地址
對於上面的寄存器,當作地址使用時,根據定址方式不同,有一種默認關系,只要指令中出現BP作地址的,則其段地址為SS,否則就為DS。當然還有段前綴一說,這要看實際情況來定了。
比如:
MOV AX,[BX];則其物理地址=DS×16+BX
MOV AX,[BP];則其物理地址=SS×16+BP
MOV AX,[BX][SI] ;則其物理地址=DS×16+(BX+SI)
MOV AX,[BP][SI];則其物理地址=SS×16+(BP+SI)
I. 匯編語言 物理地址問題
這個答案是錯誤的,正確的是:7E814H。
1、先計算數據區末字的偏移地址
16個字佔20H位元組的內存空間,0DDF6H+20H=DE16H,這是末字數據後面的偏移地址,末字的偏移地址為DE16H-2=DE14H。
2、再計算末字的物理地址
物理地址=段地址*10H+偏移地址=70A0H+DE14H=7E814H。
J. 匯編語言與介面技術怎麼求物理地址
1.匯編語言 SI DI BX BP SS DS
SI: 16位寄存器,源變址寄存器
DI: 16寄存器,目變址寄存器
BX: 16位寄存器(28位寄存器BH,BL),基址寄存器
BP: 16位寄存器,基址指針寄存器
SS : 16位段寄存器作用存放前堆棧段段址般SP連用
DS: 16段寄存器, 作用存放前數據段段址
2.根據些求物理址
面幾寄存器跟求物理址談關系.
公式: 物理址 = 基礎址 + 偏移址 = CS*10H(基礎址)+ IP(偏移址)
CS: 16位段寄存器,存放前代碼段段址
IP: 存放條要執行指令偏移址
LZ明白追問