永远健康 发表于 2014-10-3 17:23:47

关于汇编的问题

assume         cs:code,ds:data,ss:stack
data        segment
dw 0123h,0234h,0345h,0456h,0567h,0678h,0789h,089ah
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start:        mov ax,stack
mov ss,ax
mov sp,10h
mov ax,data
mov ds,ax
mov bx,0
mov cx,8
s:        push
add bx,2
loop s
mov bx,0
mov cx,8
s0:        pop
add bx,2
loop s0

mov ax,4c00h
int 21h
code ends
end start
上边这个程序为什么可以编译链接,但运行时出错。我把栈段stack改成16个字单元空间,把sp改成20h,就不出错了。我就是不明白,定义的数据段是8个字的,用8个字的栈段来存放,应该能放下啊,为什么要用16个字的空间来存放呢?我是初学,所以一直想不明白,请鱼油们指教,谢谢了。

yzsqz001 发表于 2014-10-30 22:21:42

{:1_1:}

大个的糖果 发表于 2014-11-1 03:15:52

风行回首 发表于 2014-11-16 10:50:29

assume   cs:code,ds:data,ss:stack data    segment dw 0123h,0234h,0345h,0456h,0567h,0678h,0789h,089ah data ends stack segment dw 0,0,0,0,0,0,0,0 stack ends code segment start:    mov ax,stack mov ss,ax mov sp,10h mov ax,data mov ds,ax mov bx,0 mov cx,8 s:    push add bx,2 loop s mov bx,0 mov cx,8 s0:    pop add bx,2 loop s0mov ax,4c00h int 21h code ends end start
页: [1]
查看完整版本: 关于汇编的问题