為什麼 mov sp, 32,debug程式,執行sp=32的位置,後面的程式碼就全亂了(在小甲魚零基礎彙編第6章,包含多段程式,的影片程式碼)

SimonYin發表於2024-05-21
assume cs:code, ds:data, ss:stack


data segment
    dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h; 用來作存放資料
data ends


stack segment
    dw 0, 0, 0, 0, 0, 0, 0, 0; 用來作棧的空間
stack ends    


code segment
    
start:
    
    ; 設定資料段
    mov ax, data
    mov ds, ax    
    
    ; 設定棧段
    mov ax, stack
    mov ss, ax
    mov sp, 32; 只要不是32,程式就能正常執行
    
    ; 將8個字都壓入棧
    mov bx, 0
    mov cx, 8
s:    push [bx];
    add bx, 2
    loop s
    
    ; 將8個字都彈出棧
    mov bx, 0
    mov cx, 8
s0:    pop [bx]
    add bx, 2
    loop s0
    
    
    mov ax, 4c00h
    int 21h

code ends

end start

初始情況

執行完 mov ss, ax後

對比圖

相關文章