命令: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,...