組合語言中將資料、程式碼、棧放入不同的段
阿新 • • 發佈:2021-01-15
資料、程式碼、棧放入不同的段
在學習組合語言,將資料、程式碼、棧放入不同的段。參考王爽老師的《組合語言》第四版,對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