組合語言讀書筆記(6 包含多個段的程式)

2021-10-08 10:56:53 字數 1589 閱讀 999

組合語言(第三版,王爽)讀書筆記

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,stackmov 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,...