鱼C论坛

 找回密码
 立即注册
查看: 2669|回复: 3

[已解决]求助: 王爽书第三版P130程序6.4

[复制链接]
发表于 2019-4-1 21:27:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求助: 程序是这样的,有一个数据段,在汇编指令中将数据段送入数据段段寄存器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 [bx]
       add bx,2
       loop s

       mov bx,0
       mov cx,8
   s0: pop [bx]
       add bx,2
       loop s0

       mov ax,4c00h
       int 21h
code ends
end start

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

照理说数据应该在ds:0的地方,请大家帮忙看看,谢谢。
最佳答案
2019-4-1 22:37:56
    push  [bx] 是压栈指令,作用是把数据存入堆栈,要想看到刚存入堆栈的数据,你应该看的是 ss : sp,而不是 ds : 0。完成压栈操作后,应该可以用 d ss:0 看到这些数据。
Cap2.JPG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-1 22:37:56 | 显示全部楼层    本楼为最佳答案   
    push  [bx] 是压栈指令,作用是把数据存入堆栈,要想看到刚存入堆栈的数据,你应该看的是 ss : sp,而不是 ds : 0。完成压栈操作后,应该可以用 d ss:0 看到这些数据。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-3 08:36:01 | 显示全部楼层
看了压栈的过程是正确的,但是原先咬压入栈中的数据是不对的。原先要压入栈中的数据是写在数据段data segment中的,看起来不对。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-8 15:52:00 | 显示全部楼层
是这样的,0456后面的h漏写了,所以变成01C8,其他部分都没有错了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-5 17:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表