为什么 mov sp, 32,debug程序,执行sp=32的位置,后面的代码就全乱了(在小甲鱼零基础汇编第6章,包含多段程序,的视频代码)

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后

 

对比图

 

posted @ 2024-05-21 20:09  SimonYin  阅读(29)  评论(0)    收藏  举报