peppapig 发表于 2019-4-1 21:27:55

求助: 王爽书第三版P130程序6.4

求助: 程序是这样的,有一个数据段,在汇编指令中将数据段送入数据段段寄存器ds
assume cs:code,ds:data,ss:stack
data segment
    dw 0123h,0456,0789h,0abch,0defh,0fedh,0cbah,0987h
data ends
stack segment
    dw 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
stack ends
code segment
start: mov ax,stack
       mov ss,ax
       mov sp,20h

       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

程序在内存中是这样的

在汇编指令中将数据段送入数据段段寄存器ds,然后我用Debug的d命令查看数据,却看不到数据,这可能是什么问题呢?

照理说数据应该在ds:0的地方,请大家帮忙看看,谢谢。

jackz007 发表于 2019-4-1 22:37:56

    push 是压栈指令,作用是把数据存入堆栈,要想看到刚存入堆栈的数据,你应该看的是 ss : sp,而不是 ds : 0。完成压栈操作后,应该可以用 d ss:0 看到这些数据。

peppapig 发表于 2019-4-3 08:36:01

看了压栈的过程是正确的,但是原先咬压入栈中的数据是不对的。原先要压入栈中的数据是写在数据段data segment中的,看起来不对。

peppapig 发表于 2019-4-8 15:52:00

是这样的,0456后面的h漏写了,所以变成01C8,其他部分都没有错了。
页: [1]
查看完整版本: 求助: 王爽书第三版P130程序6.4