鱼C论坛

 找回密码
 立即注册
查看: 2936|回复: 7

弄了一晚上都没解决的问题

[复制链接]
回帖奖励 14 鱼币 回复本帖可获得 2 鱼币奖励! 每人限 1 次(中奖概率 60%)
发表于 2011-7-10 22:08:36 | 显示全部楼层 |阅读模式

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

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

x

                               
登录/注册后可看大图

assume cs:codesg,ss:stacksg,ds:datasg


datasg segment
  db'1. display      '
  db'2. brows        '
  db'3. replace      '
  db'4. medify       '
datasg ends
stacksg segment
  dw 0,0,0,0,0,0,0,0
stacksg ends
codesg segment
start: mov ax,stacksg
       mov ss,ax
    mov sp,16
    mov ax,datasg
    mov ds,ax
  mov ax,4c00h
  int 21h
  codesg ends
  end start
如图,DS=144D,SS=145D,为什么数据段的内容存到堆栈段去了也就是存到145D去了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-10 22:48:45 | 显示全部楼层

回帖奖励 +2 鱼币

因为现在的DS是指向PSP空间的段地址!
每个程序加载时,先回创建一段256个字节的PSP数据区。
所以程序的段地址应该是(段地址*16+10H), 这个地址正好是SS的段地址。
因为内存里面的代码可以当做数据、栈、或者代码来执行,所以这个是自己定的。
DS和SS同时指向了一个段地址!

请看王爽 汇编语言的第92页
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-11 09:34:32 | 显示全部楼层
但是我做了对DS的使用喔,不可能一直都指向PSP的头吧,我还是不太明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-11 13:48:17 | 显示全部楼层
milorguan 发表于 2011-7-11 09:34
但是我做了对DS的使用喔,不可能一直都指向PSP的头吧,我还是不太明白

你做了对DS的使用没错,但是你DEBUG的时候没等他运行到那一步你就查看了DS的值,不是吗?
你等运行完    mov ds,ax 然后再查看DS的值,肯定没错了!~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-11 20:46:16 | 显示全部楼层

回帖奖励 +2 鱼币

不知道 我的编译运行后是好的耶 !机子问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-16 04:50:18 | 显示全部楼层

回帖奖励 +2 鱼币

这个,我也不解,困惑,可能就是电脑问题吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-16 11:23:36 | 显示全部楼层
画出内存的图,然后对照着分析,系统存在一段256个字节的数据区。
那么段地址应该是(ds*16+10H),ds和sscpu是不知道的,是程序员自己定义的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-16 11:24:20 | 显示全部楼层
为什么我抽奖都是惩罚啊??郁闷
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-20 12:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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