入栈的数据到怎么看不到?
有个问题请教,知道的请指点7.9这个程序的代码我写完了,调试了一下结果好像也正确,达到了目标,只是有一点不明白,和7.8改进了的那段代码一样,我把计数器入栈前没有指定sp,入栈后我查了一下,栈里没有看到数据,不知是什么原因?
代码如下:
assume cs:codesg,ds:datasg,ss:stacksg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov bx,0
mov cx, 4
s: push cx
mov si,3
mov cx,4
s0: mov al,
and al,11011111b
mov ,al
inc si
loop s0
add bx,16
pop cx
loop s
mov ax,4c00h
int 21h
codesg ends
end start
加了 mov sp,16这一句后,
全部代码如下:
assume cs:codesg,ds:datasg,ss:stacksg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov sp,16
mov bx,0
mov cx, 4
s: push cx
mov si,3
mov cx,4
s0: mov al,
and al,11011111b
mov ,al
inc si
loop s0
add bx,16
pop cx
loop s
mov ax,4c00h
int 21h
codesg ends
end start
又出现了一个新问题,:这个栈初始化是应该是空的啊,怎么查看时却是这样呢,请看截图
前面没设置sp,故意的?
设置了栈空间,概念上来说是空的,可以有数据的!
比如你试下,push了,再pop,查看下内存,前面push的数据还是存在的,然后你试着在push次,就会发现前面的数据给覆盖了!:D 谢谢,但不是不明白,不是通过“dw 0,0,0,0,0,0,0,0 "这一句把栈内的内容设为0了么?那么按讲:-d ss:0后看到ss:0 10H的内容应该都是0啊?
页:
[1]