实验三
写实验三之前先说一说遇到的一个小问题:
关于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文件名字现实不完全就说明名字太长了嗷。