2011-09-20 59 views
1

我有問題來區分說明。這些指令是什麼類型的尋址?

mov [300], bl 
mov [bx], cl 
+0

什麼樣的問題? –

+0

我的意思是,我試圖區分什麼類型是ASM指令。例如mov ax,bx是關於註冊表,ax,[200]是直接 – Darf

+0

@OscarFimbres我猜都是「ASM指令」? –

回答

4

我覺得[300]意味着「存放在地址300.在另一方面的價值,[bx]意味着‘存放在存儲在寄存器BX’的地址值。(請注意,無論是固定值,這只是是裸露300

+0

+1雖然請注意,由於數據段被隱式使用,所以它實際上是'[ds:300]'和'[ds:bx]'(假設是16位代碼)。 – user786653

0

讓我們假設

bx = 0xF000 
bl = 0x00 (duh) 
cl = 0x10 

直接尋址

mov byte ptr [300], bl 

寫入BL的內容(0)轉換成尋址地址300。

間接

mov byte ptr [bx], cl 

寫入0x10的進入地址0xF000的

間接與直接尋址偏移

mov byte ptr[bx+300], cl 

寫爲0x10到​​地址0xF12C (300十進制爲12℃十六進制)

86有更多的尋址方式,請參閱:http://www.ic.unicamp.br/~celio/mc404s2-03/addr_modes/intel_addr.html

使事態進一步複雜化,這樣的解釋是適用於英特爾彙編語法,對AT &也可以將GAS語法,來源和目的地顛倒過來。
這不應該讓你擔心,因爲理智的人只使用英特爾語法,因此使用起來要容易得多。