鱼C论坛

 找回密码
 立即注册
查看: 2997|回复: 1

检测题6.1的疑问

[复制链接]
发表于 2011-4-5 10:52:46 | 显示全部楼层 |阅读模式

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

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

x
4`H`B]IXUXB)%T]6GUGD6H4.jpg
我觉得填空处是 mov ds:[bx],ax
小甲鱼的答案段地址为 cs,我的理解是前面没有定义cs,但cs是默认的且初值为0.
我的理解是不是对的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-5 17:08:01 | 显示全部楼层
开头的assume cs:codesg表示cs:00开始的时候指向codesg的。然后codesg一开始是定义了一行
的dword,然后才是start,最后 end start说明程序从start开始执行。

你可以认为,cs:ip的ip一开始运行程序的时候就是指向start那一行的,但是那一行的ip不是0。

你对cs的理解是不对的。首先cs的默认的且初始值都不是0,你不能保证cs是指向0:0的,因为他是不确定的。.。。。其次,他说的是用0:0~0:15的内容修改程序的数据,题目的意思应该是,将0:0~0:15的数据复制到我们的codesg的偏移地址0~15的地方上来。

填空处是 mov cs:[bx],ax,也就是说,将ds:ax的内容写道cs:[bx]上面去,当然,因为之前有mov ax,[bx],所以ax实际上是 ds:[bx]的内容

我感觉说到这里你就该知道你是把mov命令的用法弄乱了。。。。。。

仔细地把题目再看看,然后把每个关于内存的读写操作的命令都写成完整的地址来看看把,你会懂得~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-3-28 22:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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