关于使用dosbox与masm进行汇编语言的编译,link与执行中遇到问题的解决法小汇总(慢慢汇总更新)

    本博文主要在参照了https://blog.csdn.net/yuzuruhanyu/article/details/80287419这篇博客,以及网络上各类咨询的基础上汇总而成。

    特意提示,本人水平有限,一些用词和解释可能并不十分准确,如果您有不同的看法或理解,敬请指正和探讨。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

一、在dosbox里遇见的错误:

    (1)在讲我们可能会遇到的错误之前,先讲下在我们使用dosbox来进行的操作,通常我们的第一步操作是设置虚拟磁盘,例:mount c d:\    或是    mount d d:\  因为dosbox在使用的开始时默认是给出了一个虚拟磁盘z,即开头即可见的z:\>,但必须知道的是这个磁盘z实际上是不存在的(废话),所以需要设置一个实际的物理磁盘才能进行后续的操作,比较有趣的是这里的设置其实可以设置到下一级目录,如 mount c d:\dos(这里的dos为实际d盘下的一个文件夹),同时,接下来的一步通常是c: 或者 d:,这一步的目的是在该盘目录下进行展开操作,如将运行d盘底下的debug程序时,有三步操作分别为:

              mount c d:\

              c:              //这里的c盘符对应设置的虚拟磁盘,mount c即c盘,mount d即d盘,与后一句的实际目录无关

              debug                 //该程序直接放在了d盘

       ps:还有一个常见的操作是cd(cd d:\)即目录转移,但要注意如果是对不同盘符进行操作(如你mount c e:\之后又想cd d:\ )这个时候往往会出错。

    (2)unable to open input file 

      在跟这网络上的教程走的时候,我们可能会遇到这样的错误,从字面上来理解这句报错的意思无法打开输入文件,情况主要有两种,我先说说我遇到的情况,开始时我是创建了一个一个汇编程序名字是letusbegin.asm,开始我以为是盘符和路径设置的不对,但调了一个多小时都没调明白,后来当我重命名程序名为2.asm时,发现程序就能正确地编译,链接且执行了。网络上说的第一种情况就是程序名字超出8位,所以我们在遇到这种情况的时候或者发生这种情况之前可以以防万一先给程序取一个简短的名字(名字太长也折腾自己不是)。

---------------------------------------------------明天继续更新---------------------------------------------------------------------------------------------------

   (2)illegal command :masm

     这里的错误是一个小小的细节方面的错误,在我们使用dosbox来操作masm时可能就会出现这样的错误,这里的错误一般是因为path(即路径)配置不正确。这里推荐按以下的方法输入:

    Z:>path=%path%;\msam

    另外一种是直接按目录来,例:

    Z:>path=Z:\;\masm

    造成这两个错误的原因一个可能是没有配置,另一方面可能是将masm记成了asm。

    而期间的解决之法,无他,唯手熟耳。

---------------------------------------------------明天继续更新---------------------------------------------------------------------------------------------------

    (3)extend error2 / illegal command:debug

      在我们在dosbox环境中通过debug来执行一个先前编译的exe文件,从而查看其执行过程中内存即寄存器中变化的时候,我们常常会进行以下操作:

     mount c g:\dos

     c:

     cd \asm

     debug 1.exe

     而期间可能会爆出两个错误,第一个便是illegal command,其原因一般是debug没有放在cd命令之后指定的盘符(cd命令不关键,主要是dosbox当前指定的目录下要有debug)第二个错误边是extend error2,该错误具体的含义并不明朗,有兴趣的朋友可以考证一下,我们在这里讨论它出现的原因。经过实践,这个错误的主要原因是1.exe没有存在。或者说因为一些原因没有在link时没有正确生成。此时的解决法很简单,再通过此前进行的link操作(注意设置好路径,关键词不要错):

    mount c g:\dos

    c:

   path=%path%;\masm

   cd\asm

   masm

   ....

   link

   ....

   此时就可以debug 1.exe了。而确认debug无误时,以后就可以不用再进行设置路径,与link的操作了。

---------------------------------------------------明天继续更新---------------------------------------------------------------------------------------------------

---------------------------------------------------不知道还更不更新---------------------------------------------------------------------------------------------   

猜你喜欢

转载自blog.csdn.net/Air_cat/article/details/89161018