实验三

写实验三之前先说一说遇到的一个小问题:

关于dosbox中启动masm.exe时,遇到的unable to open input file的问题(如下图)

网上有可能的原因是文件不在同一个目录下,但是如果试了不行的话那可能

原因是文件名太长拉,只要把文件名改小就可以masm拉:

 

第一步:

把书上的程序抄下来:

  

第二步:

对这个程序进行汇编、连接、运行、调试:

汇编:

然后新生成了一个文件t1.obj

然后进行链接:

出现了一个warning 是 no stack segment,但是没有关系因为我们确实没有stack segment

通过link生成了一个可执行文件t1.exe,运行t1.exe,显示这个程序的结果是输出36

调试汇编程序:

生成了t1.exe程序之后通过debug工具进行调试:

观察cx等于多少,然后是否下面这个式子是正确的。

(cs)=(ds)+10H?

如此看来这个式子是正确的,而且cx=0016。

用debug查看PSP内容:

用u对t1进行反汇编:

用t和p命令进行单步调试,遇到int 21 用p命令:

 

 

看到出现Program terminated normally说明正常返回。

二:

把t2.asm炒到电脑上:

用刚才一样的步骤对t2进行,然后通过cls清屏之后发现左上角有运行结果:

然后照着书上的吧0433h改为0432h

把0436h改为0439h

运行结果为:

然后改为0333h和0336h,结果为:

实验总结:

汇编程序设计的过程是先编译再链接然后生成exe文件

在dosbox中运行masm和link,第一点这些东西都要在挂载的目录里,然后.asm的文件名不宜太长,太长了的话masm可能不能识别这个程序

具体要多长就不能识别了呢,你在挂载目录中输入dir如果看到你要的那个.asm文件名字现实不完全就说明名字太长了嗷。

 

posted on 2018-11-17 19:45  _刘大碗  阅读(278)  评论(0编辑  收藏  举报