8086實體地址 彙編自增指令inc

2021-10-04 12:33:34 字數 1016 閱讀 3805

assume cs:codesg

codesg segment

xjazz: mov ax, 2000h ;ax=2000h

mov ds, ax ;ds=ax=2000h

mov bx, 1000h ;bx=1000h

mov ax, [bx] ;將偏移位址1000處儲存的資料賦值給ax

;即將實體地址ds:1000處(即2000:1000處)儲存的值給ax

inc bx ;bx自增1,即bx++

inc bx ;兩次自增完成後bx=1002

mov [bx], ax ;將ax儲存的值賦值到實體地址ds:1002處

inc bx

inc bx

mov [bx], ax ;將ax儲存的值賦值到實體地址ds:1004處

inc bx ;bx++; bx=1005

mov [bx], al ;將al的值賦值給實體地址ds:1005

inc bx

mov [bx], al ;將al的值賦值給實體地址ds:1006

mov ax, 4c00h

int 21h

codesg ends

end xjazz

8086微機採用段位址+偏移位址的方式表示實體地址比如本例**現的實體地址(表示):2000:1000,2000:1002,2000:1004,2000:1005,2000:1006分別對應著實際實體地址的21000,21002,21004,21005,21006。

再詳細解釋一下就是冒號前面是段(基)位址,冒號後面是偏移位址,實際表示的實體地址就是把段位址乘以16加偏移位址,16進製制下的乘16就是進一位。

inc就是組合語言中的自增指令,相當於c/c++語言中的"++",這也是為什麼c/c++語言下++、–會比+1、-1快的原因,因為當執行自增,自減運算時有直接對應的彙編指令。

ps:作為常識應當知道,編譯器編譯高階語言寫成的程式時,是先將高階語言**翻譯成對應的彙編指令,再將彙編指令轉化成對應的機器碼執行。

8086CPU實體地址

8086cpu有20位位址匯流排,可以傳送20位位址,達到1mb定址能力,但8086cpu內部是16位,表現出來的定址能力只有64kb。8086cpu採用一種在內部用用兩個16位位址合成的方法來形成乙個20位的實體地址。cpu中的相關部件提供兩個16位位址,乙個為段位址,另乙個為偏移位址,位址加法器...

《組合語言》實體地址

段位址應該是乙個邏輯概念,從 組合語言 3.5資料段原文中 比如用123b0h 123b9h 這段記憶體空間來存放資料,我們就可以認為123b0h 123b9h這段記憶體是乙個資料段,它的段位址為123bh,長度為10個byte。從這裡看出段位址指的應該是乙個資料段的起始位置,在 彙編無言 2.7實...

組合語言 實體地址

你只要嘗試過飛,日後走路也會仰望天空,因為那是你曾經到過,並渴望回去的地方 今日語句 實體地址 我們知道,cpu訪問記憶體單元時,要給出記憶體單元的位址。所有的記憶體單元構成的儲存空間是乙個一維的線性空間,每乙個記憶體單元在這個空間中都有唯一的位址,我們將這個唯一的位址稱為實體地址。cpu通過位址匯...