鱼C论坛

 找回密码
 立即注册
查看: 8402|回复: 5

代码move ax,data mov ds,ax的意义

[复制链接]
发表于 2011-9-21 03:43:52 | 显示全部楼层 |阅读模式

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

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

x
疑惑在于assume定义过各段的含义了,为什么在代码段内还要再写一遍数据段地址呢,代码段的地址不是自动加载到cs的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-21 09:12:25 | 显示全部楼层
assume语句是伪指令,CPU看不懂的,也无法执行的。他的作用只是告诉编译器有这样的“假设”,然后再通过指令让CPU实现这样的假设。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-9-22 00:45:11 | 显示全部楼层

编译器的作用不就是完成这种假设吗?cs不用赋值啊,是不是涉及到程序的运作原理啊,可以详细解释么。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-22 09:46:56 | 显示全部楼层
戚凤 发表于 2011-9-22 00:45
编译器的作用不就是完成这种假设吗?cs不用赋值啊,是不是涉及到程序的运作原理啊,可以详细解释么。

”编译器的作用不就是完成这种假设吗?“
没错,编译器在编译伪指令‘assume ds:data,ss:stack'时候完成对ds和ss的假设。
cs不用赋值啊”
这需要你理解程序怎么样才可以获得执行权,简单的说,操作系统shell程序在加载该程序后,便设置了cs:ip,不需要你在程序代码里手动设置的。这是cs和ds,ss其他段地址设置的区别。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-9-23 02:11:53 | 显示全部楼层
tsembrace 发表于 2011-9-22 09:46
”编译器的作用不就是完成这种假设吗?“
没错,编译器在编译伪指令‘assume ds:data,ss:stack'时候完成 ...

十分感谢你的细心回答,谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-1-13 18:11:28 | 显示全部楼层
我也谢谢,我也想通了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-10-8 00:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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