免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6252 | 回复: 13
打印 上一主题 下一主题

一个奇怪的问题,拷贝16h和17h次结果是一样的 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-14 16:10 |只看该作者 |倒序浏览
最近在重新看王爽的那本汇编书,目前看到第五章,然后里面有个实验四,其中第三题的题目(见附件中的图片p.jpg)




然后我的答案如下

code segment
     mov ax , cs
     mov ds , ax
     mov ax , 0020h
     mov es , ax
     mov bx , 0
     mov cx , 16h
s:  mov al , [bx]
     mov es:[bx] , al
     inc bx
     loop s
  
     mov ax , 4c00h
     int 21h   

code ends
end
其中加粗的部分,为我补全的代码
'
我用debug调试下来发现,mov cx , 16h和mov cx , 17h都可以将"mov ax , 4c00h"之前的指令复制到内存0:200处。

这是为什么?

[ 本帖最后由 janusle 于 2007-4-14 16:14 编辑 ]

p.JPG (22.71 KB, 下载次数: 36)

p.JPG

论坛徽章:
0
2 [报告]
发表于 2007-04-14 16:21 |只看该作者
到底是将那段指令复制到 0:200 呀?

论坛徽章:
0
3 [报告]
发表于 2007-04-14 16:38 |只看该作者
你这 16h 是怎么计算出来的?

论坛徽章:
0
4 [报告]
发表于 2007-04-14 16:41 |只看该作者
原帖由 mik 于 2007-4-14 16:21 发表于 2楼  
到底是将那段指令复制到 0:200 呀?



就是将程序自身复制到0:200处。

论坛徽章:
0
5 [报告]
发表于 2007-04-14 16:48 |只看该作者
原帖由 mik 于 2007-4-14 16:38 发表于 3楼  
你这 16h 是怎么计算出来的?



我用Debug的U命令查看了代码

然后看到mov ax , 4c00h在0017处,所以推断程序长度为16h


以下Debug的截图。环境是Linux下的DosBOX

[ 本帖最后由 janusle 于 2007-4-14 16:50 编辑 ]

debug.jpg (56.72 KB, 下载次数: 32)

debug.jpg

论坛徽章:
0
6 [报告]
发表于 2007-04-14 17:03 |只看该作者
题目要求的应该是用 masm 的伪指令,而不是你在 debug 中数出来的.

若是数出来,那应该是17h个字节,不是16h个字节

论坛徽章:
0
7 [报告]
发表于 2007-04-14 17:07 |只看该作者
伪指令要查查 masm 文档,

第1个空应是: mov ax,@code

论坛徽章:
0
8 [报告]
发表于 2007-04-14 17:13 |只看该作者
对,是17h个字节,因为从0开始的。但是我不明白,为什么我即使填的是16h(一开始我误算),依旧能够正常复制所有指令。


另外,题目应该是利用Debug得出答案的,因为之前并没有关于伪指令的篇章。而且书中前面的篇章,作者经常使用Debug来分析程序。

[ 本帖最后由 janusle 于 2007-4-14 17:15 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2007-04-14 17:18 |只看该作者
原帖由 mik 于 2007-4-14 17:07 发表于 7楼  
伪指令要查查 masm 文档,

第1个空应是: mov ax,@code



呵呵,因为只有一个段,
我觉得用mov ax , cs有同样的效果。所以这么写

论坛徽章:
0
10 [报告]
发表于 2007-04-14 18:54 |只看该作者
王爽的这本书好好吗?
    以前没有听说过,我们以前学的汇编,现在想来,垃圾呀?是我们老师编的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP