我的最开始的程序是这样的:
assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
c segment
db 0,0,0,0,0,0,0,0
c ends
code segment
start:
mov ax,a
mov ds,ax
mov ax,b
mov es,ax
mov ax,c
mov ss,ax
mov sp,8H
mov al,0
mov bx,0
mov cx,8
s:
mov ah,[bx]
add ah,es:[bx]
push ax
inc sp
inc bx
loop s
mov ah,4cH
int 21H
code ends
end start
编译,连接都通过了 但是在debug调试的时候,调试到循环那里循环到一半就会跳出来
根据一句句执行后 我认为是 mov sp,8H 这句错了于是就改为:mov sp,10H
虽然比之前执行多了几次循环可是还会跳出来(此时的sp=0BH), 于是就再改为:mov sp,20H
这次却行了! 当然,得到的结果不是本题想要的。
我不明白的是前两次怎么执行到一半就跳出来了 是栈的空间不够吗 好像不是啊?
请各位大大给小弟我解解惑~~ |