第五章实验4第三小题答案(还是有点不懂啊)

实际上这是一道再简单不过的问题了,不知道为什么论坛上有许多人都对它存有疑惑。正确答案就是
第一个空毫无疑问应该是:
mov ax,cs
关键是第二个空,应该是:
mov cx,17h
接下来我来分析一下:

cs中存储了这段代码的起始位置,而不是用什么ds。

这道题的关键是我们需要复制的字节数,可我们怎么知道是23个字节(也就是17h)呢,首先将
mov cx,___这个空用0代替(因为无论如何cx都占2个字节,以后再把0替换过来),也就是mov cx,0。
然后编译连接代码,生成.exe程序放到debug中。再-r,就可以看到cx中的取值(cx中存放的是这个.exe程序的总字节数),cx=001c,001c等于28,但是要注意应该去掉mov ax,4c00h(对应机器码B8004C)和int 21h(对应机器码CD21)两句代码所占的字节数,总共五个字节,所以应该是28-5=23,转换成十六进制就是17h。然后重新编辑源程序,把mov cx,0替换成mov cx,17h就行了。

经过我的测试,这样做是绝对正确的。


此题的目的是:
1、理解CS和CODE的关联
2、理解CS保存程序的代码段,即“复制的是什么,从哪里到哪里”
3、理解CX在载入程序后保存程序的长度。
4、理解数据和代码对CPU来说是没区别的,只要CS:IP指向的就是代码


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值