鱼C论坛

 找回密码
 立即注册
查看: 1834|回复: 4

assume的问题

[复制链接]
发表于 2012-8-8 17:19:30 | 显示全部楼层 |阅读模式
1鱼币
assume cs:code,ss:stack,ds:data
这样写会把 code 段的地址赋给 cs
但是如果使用ss,还必须这样
mov  ax,stack
mov  ss,ax
mov  sp,16
那么我的问题是,ss:stack究竟干什么用,是不是可以不写

最佳答案

查看完整内容

assume 是一条伪指令, 所以必须要加上类似 的指令 上面的一段是我引用的网上比较好的一段解释,不是原创。 另外再引用一段王爽老师的解释: 其实可以看出要么王爽老师也不想深入讨论这个问题,要么就是王爽老师对于这个问题搞的也不是特别透彻。 没有assume也行,masm5.0不知道可不可以,我用masm6.15是完全可行的,也就是说编译器换代后assume要不要问题不大了,但是编程习惯还是写上吧。 调试结果 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-8 17:19:31 | 显示全部楼层
assume 是一条伪指令
assume的作用是告诉汇编程序各个段寄存器应该与哪个逻辑段对应,并不赋予该逻辑段的段地址

所以必须要加上类似
mov ax,data
mov ds,ax
的指令

上面的一段是我引用的网上比较好的一段解释,不是原创
另外再引用一段王爽老师的解释:
这条伪指令的含义是“假设”,他假设某一段寄存器和程序中的某一个用segment.......ends 定义的段相关联。通过assume说明这种关联,在需要的情况下,assume并不是一条非要深入理解的伪指令,以后我们编程时,记着将assume将有特定用途的段和相关的段寄存器相关联起来即可。   比如,在程序中,我们用 codesg segment .......codesg ends 定义了一个名为codesg的段,在这个段中存放代码,所以这个段是一个代码段。在程序的开头,用 assume cs:codesg 将用作代码段的段codesg和CPU中的段寄存器cs连接起来。

其实可以看出要么王爽老师也不想深入讨论这个问题,要么就是王爽老师对于这个问题搞的也不是特别透彻。


没有assume也行,masm5.0不知道可不可以,我用masm6.15是完全可行的,也就是说编译器换代后assume要不要问题不大了,但是编程习惯还是写上吧。
调试结果
assume.png
而且我也试了很多以前写的程序,发现assume没有可以编译运行。

伪指令也就是编译器看的,没必要深入了解的。其实是想了解资料也不多。

总而言之
mov ax,stack
mov ss,ax
mov sp,16
上面这种把逻辑段的段地址给段寄存器的步骤必须要,assume随意啦。

另外附上我找的一些资料,你可以探究探究
http://hi.baidu.com/undeadnightelf/item/d7548e5d0736bc3194eb05f3
http://topic.csdn.net/t/20040721/09/3194712.html
http://jpkc.zzu.edu.cn/hbyycai/faqs/list.asp?id=91
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-8-8 18:54:04 | 显示全部楼层
mov  ax,stack
mov  ss,ax
mov  sp,16
这个的作用是告诉cpu我定义的一个段,段名是stack,我现在把它作为栈段来用,以后cpu执行push pop之类的栈操作,就把stack做栈段。
当然你如果
mov  ax,stack
mov  ds,ax
就是告诉cpu我定义的stack段是用作数据段,以后我操作数据段的指令,如[bx]默认的段地址就在stack段了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-8-9 14:10:59 | 显示全部楼层
本帖最后由 肥马时代 于 2012-8-9 14:13 编辑

谢谢lukelqz老师  ,我明白了,其实assume可以不要,但是至少必须要assume cs:code,这样理解对吧。
可能这个assume 更多是给看代码的人看的类似注释,因为assume ss:stack确实什么都没做
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-8-9 15:37:03 | 显示全部楼层

:$ 不谢。我也是学生哈。就像你说的,至少加上assume cs:code 比较好。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-16 05:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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