組合語言(第三版,王爽)讀書筆記
dw:即「define word」定義字型資料,存放在**段中(cs)
示例程式
assume cs: code
code segment
dw 0123h, 0456h, 0789h, 0abch, 0defh, ofedh, 0cbah,0987h
start :
mov bx, 0
mov ax, 0
mov cx,8
s: add ax,cs:[bx]
add bx, 2
loop s
mov ax,4c00h
int 21h
code ends
end start
assume cs: codesg
codesg segment
dw 0123h, 0456h, 0789h, 0abch, 0de fh, ofedh, ocbah, 0987h
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;用dw定義16個字型資料,在程式載入後,將取得16個字的記憶體空間,存放這16個資料。在後面的程式中將這段空間當作棧來使用
start: mov ax, cs
mov ss, ax
mov sp, 30h ;將設定棧頂ss:sp指向cs:30
mov bx, 0
mov cx, 8
s: push cs: [bx]
add bx, 2
loop s ;以上將**段0~15單元中的8個字型資料依次入棧
mov bx, 0
mov cx, 8
s0: pop cs: [bx]
add bx, 2
loop s0 ;以上依次出棧8個字型資料到**段0-15單元中
mov ax, 4c00h
int 21h
codesg ends
end start
把它們放在在乙個**段中使程式顯得混亂
使用如下方式:
assume cs:code,ds:data,ss:stack
data segment
資料...
data ends
stack segment
棧空間...
stack ends
code segment
start:
**...
code ends
end start
對於不同的段,使用不同的段名
不能直接使用mov ds: data
不能直接將乙個數值送入段暫存器中
assume cs:code,ds:data,ss:stack
僅僅是在源程式存在的資訊,程式中需要使用例如mov ax,stack
和mov ss,ax
的語句來設定暫存器
組合語言筆記06 包含多個段的程式
在作業系統的環境下,合法地通過作業系統取得的空間都是安全的。程式取得所需空間的方法有兩種 一是在引導程式的時候為程式分配,再就程式在執行過程中向系統申請。對於第一種方式,我們在程式中定義將要處理的資料,這些資料被編譯 連線程式作為程式的一部分寫入可執行檔案中。當可執行檔案的程式載入到記憶體中,這些資...
組合語言學習筆記(六)包含多個段的程式
6.1在 段中使用資料 dw 定義字型資料 define word db 定義位元組資料 define byte assume cs codesg code segment dw 0123h,0456h 偏移位址從0 2 4 6.start mov bx,0 mov ax,0 mov cx,8 s ...
組合語言 筆記 包含多個段的程式
問題 程式設計計算以下8個資料的和,結果存在ax暫存器中 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h assume cs code code segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,...