本博文主要在参照了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位,所以我们在遇到这种情况的时候或者发生这种情况之前可以以防万一先给程序取一个简短的名字(名字太长也折腾自己不是)。

//

感谢评论区的朋友,让我想起来还有一个情况没有解决。这种情况其实也蛮让人哭笑不得的,简单的来说就是--masm无法找到这个文件。例如:文件后缀名不是asm。

这种错误据我所知一般发生在win10系统,因为win10系统的文件后缀名一般是隐藏的,像历代的win系那样直接重命名是不好使的(当然也可以,但具体怎么改自己百度)这个问题比较好的解决方案是(举个例子)创建了一个txt文件之后,将其写入汇编指令,这时候再另存为成asm文件。

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

(2)illegal command :masm

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

Z:>path=%path%;\masm

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

Z:>path=Z:\;\masm

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

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

//

更新,其实这个错误还有一个原因是当前目录下找不到masm.exe文件。(同理link等)在dosbox环境中使用外部命令时,对应的目录下必须要有该执行文件才行。

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

(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的操作了。

(4)error A2088: END directive required at end of file

这个错误的出现实在令我困惑不解,我是在学习王爽的《汇编语言》,用masmplus写到其中一个例子时出现了这样的错误。这个错误字面上的意思结束指令end需要放在文件的末尾,但经过比较程序并无错误,于是我百度了这个错误,结果发现并没有准确的答    (有一些外网的文章有讲到,不过因为解决了就没去看,有兴趣的朋友可以去浏览一下)接下来我们来说我是怎么解决这个问题的(虽然我觉得这并不能说是解决了问题)

从这个问题的描述来看,可以自然而然的推出是我们的code ends(这个code是什么无所谓,我当时写的是code)或者end出现了问题,因为在其它地方有类似的经过,于是我猜测是不是code这个名称让masm觉得不爽,于是我改成了codesg,结果就成功编译了;出于严谨(正好得写博客)和好奇心,我就继续测试了其它几个名称,发现都可以通过,甚至我回头重新测试了一遍code ends,还可以重新编译。

因为错误已经解决,我也没法对它进行更多的测试,只能猜测这个错误的是masmplus本身编译时出现了一些错误,大概重新启动或者改写名字都可以解决这个问题(当然你也可以不用masmplus来搞这个)。

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

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

(5) error A2001: immediate operand not allowed

没错,时过多日我又来更新了。

这是一个我在复习王爽老师的《汇编语言》时,跟着走一些程序时编译遇到的错误。而这个错误都在这样的一种语句上出现:

push  [3]              //push/pop [数字]

首先这个报错的字面意思是立即操作数是不被允许的。 然后我就有点懵,我好好地照着王爽老师的一点点码的啊,哪错了啊。

然后百度了一下这个错误,必须吐槽一下有很多人的解答是真的水。总归我没找到答案。

但后面我思考了一下,问题应该在于用masmplus编译的环境不同,或者说它本身编译的原理不同。

ps:这里的具体原理我也不懂,我写一下我的解决法:

因为王爽老师在书里一直是用debug来做的。或许我们可以用debug来执行?

于是我就再按书里的代码,用a命令一条条写了下去。

能写!而且能执行!

ps:在dosbox环境下,masm还是无法编译push [3]这样的东西。

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

  1. Win10 64位 汇编环境的搭建: 安装配置 DOSBOX、MASM

    win10 cmd没有debug模式 需要进入 debug 调试模式下学习汇编语言时,会出现类似以下的错误提示: 这是因为他们使用的是 64 位的 Windows 系统(Win 7,Win 8 以及 ...

  2. MASM学习x86汇编语言3 BIOS简介

    MASM学习x86汇编语言3 BIOS简介 一.说明 1. 本章准备工具 2. BIOS相关概念 (1) BMC和IPMI (2) EFI (3) UEFI 统一可扩展固件接口 3. 主流的一些BIO ...

  3. 汇编工具DOSBOX和MASM的分享与使用

    一.汇编工具的分享 说明:dosbox和masm都打包放在了一个压缩包上,下面附上链接代码,下载安装dosbox使用即可.如下图: 链接:https://pan.baidu.com/s/11aKWml ...

  4. 汇编语言常用指令汇总(持续更新)

    汇编语言常用指令汇总(持续更新) 通用数据传送指令 累加器专用指令 有效地址送寄存器指令 标志寄存器传送指令 加法指令 减法指令 乘法指令 除法指令 逻辑指令 移位指令 通用数据传送指令 MOV(Mo ...

  5. 搭建汇编语言开发环境总结 利用DOSBox+TASM/MASM

    TASM汇编程序开发环境配置 本文介绍如何在电脑上搭建汇编语言开发环境. 由于汇编语言开发工具TASM和MASM只能在16位系统中使用,目前大多数电脑都是64位的,无法运行它们,所以需要使用模拟器来模 ...

  6. DOSBox及MASM环境配置

    (1)下载DOSbox并安装(尽量不要安装在C盘) 正常安装即可 链接:https://pan.baidu.com/s/1KTGUXzEQgV575U1t-YqLYQ  提取码:y1s7 (2)进行M ...

  7. 安装教程——汇编工具(dosbox、masm、masm for windows)

    资源下载: https://download.csdn.net/download/qq_45786729/15567756 Masm 解压相应文件. 创建一个工作目录(例如:e:\dos),在该目录下 ...

  8. DOSBOX使用的一些方法和注意点(汇编实验中遇到的)

    1.切换至全屏模式,用 Alt+Enter 键,再按,会回到原来的窗口模式 下面为DOSBOX中的自述文件(readme)中的原文(一些提示): START: How to start? At the ...

  9. 汇编语言LENGTHOF运算符:计算数组中元素的个数

    LENGTHOF 运算符计算数组中元素的个数,元素个数是由数组标号同一行出现的数值来定义的.示例如下: .data byte1 BYTE 10,20,30 array1 WORD 30 DUP (?) ...

最新文章

  1. 字节跳动《Python高频面试题》火了,完整版 PDF 开放下载!
  2. ffmpeg Windows Error 0xe06d7363
  3. 线性时变系统能用模型预测控制吗_线性系统理论(二)运动分析
  4. 基于Android的ELF PLT/GOT符号重定向过程及ELF Hook实现
  5. Django打造大型企业官网-项目实战(二)
  6. java流 视频_java如何对视频文件处理?包括拉流推流视频截取等?
  7. WinForm界面开发教程:DevExpress WidgetView使用介绍
  8. 在线问卷工具LimeSurvey
  9. (2016.12.02更新)CnCrypt文件保险柜1.18,兼容TrueCrypt加密卷,单文件绿色版
  10. 网络爬虫之正则表达式
  11. 【问天Block】STC15单片机PWM输出讲解
  12. 酷客多郝宪玮:新零售+社交电商的完美结合,将助力新零售品牌快速传播
  13. 0 在c语言中有什么作用,\0在c语言中代表什么?
  14. 鸡兔同笼 【用c语言求解 鸡兔同笼】c语言新手第二天实战
  15. Android实现手机静音
  16. 利用Hyperledger fabric-config库进行通道配置更新
  17. 数字签名和数字签名证书理解
  18. 【更新完毕】《算法竞赛中的初等数论》(ACM / OI / MO)前言、后记、目录索引(十五万字符的数论书)
  19. js进阶 发送短信案例 自动跳转页面
  20. 天气预报查询 API + AI 等于王炸(一大波你未曾设想的天气预报查询 API 应用场景更新了)

热门文章

  1. 京东2015校园招聘技术类笔试题(笔试时间:2014-10-18)
  2. 前台--中台--后台,什么是中台呢?看这一篇足矣
  3. 网上发行和网下发行的区别
  4. 何海涛算法面试题感悟之五:查找最…
  5. 环境监测调查无人船OES120
  6. sina微博api:获取24小时内前20条用户的微博信息
  7. Lang.NET 2008 相关Session
  8. 法国计划2020起征收数字税
  9. 浏览器插件之ActiveX开发
  10. Visual Studio代码:高级用户指南