彙編定址方式總結

2021-05-12 21:19:07 字數 1204 閱讀 1701

命令:mov dowrd ptr ds:[esi],edi

解釋:od自動反編譯了 ds ss自動加入了,不需要手動 [ds*0x10 + esi]

1********************立即數定址

mov ax,1234

2 ***************====暫存器定址 (所需要的運算元 存放在乙個暫存器裡)

mov ax,bx

mov bx,dx

test ax,ax

mov ax,bl ;是錯的

改正: mov ax, word ptr bl  ;把bl強制轉成字(word)型別

3.***************====暫存器直接定址

mov ax,[200h]

(ds*0x10 + 200h)

4********************暫存器間接定址(所有運算元的偏移位址在bx,bp,si,di四個暫存器其中之一)

mov ax,[bx]

mov ax,[bp]

mov ax,[si]

mov ax,[di]

結果:ds*0x10 + [bx]  (ds的值左移一位  + bx位址指向的 值)

5.***************====暫存器變址定址

mov ax,[bp-30]

寫的形式等價於 mov ax,-30[bp]

結果: ds*0x10 + [bp-30]   //bp-30的位址指向的值

6********************基址加變址定址

如果bx是基址,就用ds*10

如果bp是基址,就用ss*10

mov ax,[bx+si]   就是->  ds*0x10 + [bx+si]

mov ax,[bp+si]   就是->  ss*0x10 + [bx+si]

結果是所有的值加起來的位址 指向的 值

7********************相對基址加變址定址

如果bx是基址,就用ds*10

如果bp是基址,就用ss*10

mov ax,[bx+si+10]   就是->  ds*0x10 + [bx+si+10]

mov ax,[bp+si+10]   就是->  ss*0x10 + [bx+si+10]

寫的形式 等價於 mov ax, [bp]+[si]+10

結果是所有的值ds+bx+si+10加起來的位址 指向的 值

彙編定址方式總結

一,暫存器定址 例如 mov ax,bx 運算元在cpu的兩個暫存器中。二,立即數定址 例如 mov ax,1234h 指令直接存放在指令 中。三,儲存器定址 1,直接定址 給出偏移量 mov al,es 1234h 運算元在 取決於,偏移量前給出的段暫存器。2,暫存器間接定址 mov ax,bx ...

8086彙編定址方式總結

1.運算元可以存在什麼地方?運算元存在於指令 中,處理器解碼時就立即獲得了這個運算元,這就是立即 數 定址方式。彙編指令中,這個立即數 運算元 以常量形式出現。運算元存在於處理器內部暫存器中,處理器從暫存器中獲得這個運算元,這就是暫存器定址方式。彙編指令中,這個暫存器運算元以暫存器名形式出現。運算元...

彙編 定址方式

定址方式 1立即定址方式 運算元包含在指令中,作為指令的一部分,跟在操作碼後存放在 段。這種運算元稱為立即數,可以是16位,也可以是8位。前者按照高高低低原則存放。例子 mov ax,1234h 2暫存器定址方式 運算元在cpu內部的暫存器中,指令中指定暫存器號。對於16位運算元,暫存器可以是ax,...