1. 程式人生 > 其它 >組合語言中將資料、程式碼、棧放入不同的段

組合語言中將資料、程式碼、棧放入不同的段

技術標籤:組合語言反彙編

資料、程式碼、棧放入不同的段

在學習組合語言,將資料、程式碼、棧放入不同的段。參考王爽老師的《組合語言》第四版,對P133的彙編程式碼,進行了個人理解標註。僅供參考,存在錯誤之處,請大家斧正。

參考物理邏輯圖片:

在這裡插入圖片描述

assume cs:b, ds:a, ss:c; // 程式碼段cs、資料段ds、棧段ss

a segment 
	dw 0123h,0456h,0789h,abcdh,0defh,0fedh,0cbah,0987h // 共8個位元組
a ends

c segment
	dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 // 共16個位元組
c ends

b segment 
d :
mov ax,c // 初始棧段,C段當作棧空間 mov ss,ax // ss:sp指向C:20 mov sp,20h mov ax,a // 初始資料段a mov ds,ax // ds指向a段 mov bx,0 // 該小段程式碼為資料入棧 mov cx,8 // ds:bx 指向a段第一個單元 s:push [bx] // (0-15單元)依次入棧 add bx,2 loop s mov bx,0 // 該小段程式碼為資料出棧 mov cx,8 s0:pop [bx] addd bx,2 loop s0 mov ax,4c00h // 程式結束的標誌
int 21h b ends end d