assume cs:code,ds:data,ss:stack
data segment
db 'ibm '
db 'dec '
db 'dos '
db 'vax '
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,4//////我把这里改成了4试验了一下系统崩溃了?16(书上就是16)和8都行?之所以改成4我是这么想的:定义的这个栈只存放一个比个位数4还小的数,那有一个字单位足够了,而且push进去马上就pop出来没有连续的push/pop,因此也没有栈顶超界啊。可是为什么debug执行几步以后系统就崩溃了呢?别的地方和书上都是一样的别的地方没问题啊,应该就是这个栈的问题。。请高手赐教一二 小弟拜谢!!~~~//////
mov bx,0
mov cx,4
s2: push cx
mov si,0
mov cx,3
s1: and byte ptr [bx+si],11011111b
inc si
loop s1
add bx,10h
pop cx
loop s2
mov ax,4c00h
int 21h
code ends
end start |