tmlnsc 发表于 2011-7-24 17:42:18

入栈的数据到怎么看不到?

有个问题请教,知道的请指点
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

tmlnsc 发表于 2011-7-24 17:54:23

加了 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


又出现了一个新问题,:这个栈初始化是应该是空的啊,怎么查看时却是这样呢,请看截图

udsky 发表于 2011-7-24 23:38:55

前面没设置sp,故意的?
设置了栈空间,概念上来说是空的,可以有数据的!
比如你试下,push了,再pop,查看下内存,前面push的数据还是存在的,然后你试着在push次,就会发现前面的数据给覆盖了!:D

tmlnsc 发表于 2011-7-25 08:07:42

谢谢,但不是不明白,不是通过“dw 0,0,0,0,0,0,0,0 "这一句把栈内的内容设为0了么?那么按讲:-d ss:0后看到ss:0 10H的内容应该都是0啊?
页: [1]
查看完整版本: 入栈的数据到怎么看不到?