組合語言學習筆記(六)包含多個段的程式

2021-06-22 19:27:56 字數 1138 閱讀 7872

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:add ax,cs:[bx]

add bx,2

loop s

mov ax,4c00h

int 21h

code ends

end start

在定義資料的時候,一定要指定程式的入口,否則cpu容易將資料混淆成指令。

end:除了通知編譯器程式結束外,還可以通知編譯器程式的入口在什麼地方。

利用棧實現逆序

assume cs:codesg

codesg segment

dw 0123h,0456h,0789h....

dw 0,0,0....

start:mov ax,cs

mov ss,ax

mov sp,32

mov bx,0

mov cx,8 ;設定迴圈次數

s:push cs:[bx]

add bx,2

loop s

mov bx,0

mov cx,8

s0:pop cs:[bx]

add bx,2

loop s0

mov ax,4c00h

int 21h

codesg ends

end start

6.3將資料、**、棧放入不同的**段

時刻要記住8086(16位)中的段容量不能大於64kb(2^5)

assume cs:code,ds:data,ss:stack

data segment

...data ends

stack segment

...stack ends

code segment

...code ends

data段使用

mov ax,data

mov ds,ax

data:[6]

組合語言筆記06 包含多個段的程式

在作業系統的環境下,合法地通過作業系統取得的空間都是安全的。程式取得所需空間的方法有兩種 一是在引導程式的時候為程式分配,再就程式在執行過程中向系統申請。對於第一種方式,我們在程式中定義將要處理的資料,這些資料被編譯 連線程式作為程式的一部分寫入可執行檔案中。當可執行檔案的程式載入到記憶體中,這些資...

《組合語言》學習(六)多個段的程式

組合語言 第六章主要講述 如何編寫包含多個段的彙編源程式 本章的文字內容不多,主要通過程式設計實踐來理解彙編源程式架構的含義,通篇學下來,我覺得有以下幾點需要理解清楚 1,這裡所說的多個段 segment 從彙編 程式 的角度來說,它指的是程式所占用的記憶體空間的劃分,大致分為 data segme...

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

組合語言 第三版,王爽 讀書筆記 dw 即 define word 定義字型資料,存放在 段中 cs 示例程式 assume cs code code segment dw 0123h,0456h,0789h,0abch,0defh,ofedh,0cbah,0987h start mov bx,0 ...