老师给的压缩包里虽然有两个搭建环境的步骤,但是内容跳跃太大,新手友好度极低,如果一味按照那两个文件,往往是看得一头雾水,恐怕很难达到理想的效果
所以,应该怎么做呢?
(以下内容电脑端阅读体验更佳)
一、搭建汇编环境
首先说明一点,为什么要这样大费周章地搭建环境?像教材一样通过“运行”直接打开dos命令窗口进行相关操作不就行了吗?
——因为教材所教授的内容是在16位操作系统下运行的,而在现如今普遍是win10 64位的系统下,由于兼容性问题会无法运行,如图
再者,Windows xp 系统自带debug.exe,但在不断的系统更迭之中,很多东西都被淘汰掉了。
目前在win10中已经不再自带debug.exe
在学校机房的xp系统下,通过“运行”打开dos窗口,直接输入debug,即可显示出相关内容。
而在win10的dos窗口下,直接输入debug
所以在机房xp系统可以轻松实现的汇编操作,在win10下只能提前搭建环境,或者是用安装虚拟机模拟出xp系统,相比而言后者会更加繁琐的。
1.安装DOSBox
把从班级事务群里下载的压缩包解压,会出现三个压缩包和两个文档
解压 DOSBox0.74-win32-installer.rar
打开安装程序,一直点下一步就行了
2.配置DOSBox
在任意一个磁盘中,建立一个新文件夹,用于保存汇编工具(如MASM、Link、DEBUG等工具)和汇编文件(*.asm)
比如,我在E盘建了一个AssemblyLanguage文件夹,即E:\AssemblyLanguage
接着,把剩下两个压缩包都解压了
从masm6文件夹里 找到这几个核心文件,全部复制粘贴到你创建的新文件夹中
在MASM6.15文件夹中虽然也有这些文件,即使文件名一模一样,由于masm版本不同,两个文件夹中的文件还是在实质上有差别的。如果从MASM6.15文件夹复制这些文件,在后续运行过程中可能会报错,如This program cannot be run in DOS mode
再从MASM6.15文件夹中找到ML.ERR复制粘贴到你创建的新文件夹中
就大功告成了~
(实际上我发现好像并不需要这个ML.ERR文件,但是我记得在前几次搭建环境的过程中有提示缺少这个文件……玄学问题)
(以上所列举的核心文件基本上覆盖了大部分需要的功能,或许会有遗漏,如果运行过程中系统提示缺少某个文件,找到并复制粘贴过来就好)
二、如何输出Hello World!
前期工作
打开桌面上的DOSBox,这时会弹出两个窗口,我们的主要操作在前面的小窗口进行,但后面的窗口不要关闭
(以下命令的拼写忽略大小写)
此时的盘符Z表示的是虚拟硬盘,我们需要用mount命令更改DOSBox的映射指向,指向你创建的文件夹
输入
mount c e:\assemblylanguage
回车
若出现语句出现Drive C is mounted as local directory e:\assemblylanguage\
表明映射成功
我知道可能你会说
啊~
我好懒啊不想每一次打开都要输一行字映射一遍……
那么,有没有一款产品……啊不对,有没有一种方法可以让它自动映射呢?
没错!是有的!
打开DOSBOX的安装根目录(默认安装路径:C:\Program Files\DOSBox-0.74;若是32位的系统,则默认安装路径:C:\Program Files (x86)\DOSBox-0.74),双击文件DOSBox 0.74 Options.bat,运行该批处理文件后系统会用文本文档Notepad打开配置文件dosbox-0.74.conf。
将光标定位到dosbox-0.74.conf文件的[autoexec]节点(一般在该文件末尾),在文件中添加以下内容:
1 | MOUNT C E:\AssemblyLanguage # 将目录E:\AssemblyLanguage挂载为DOSBOX下的C: |
再次打开DOSBox后,就会发现最前面几行自动显示有
Z:>MOUNT C E:\AssemblyLanguage
Drive C is mounted as local directory E:\AssemblyLanguage\
等字样,表明已经映射成功
然后,输入dos命令c:
更改盘符,进入虚拟盘C:这个虚拟盘C就是刚才创建的文件夹AssemblyLanguage
嘿嘿嘿,接下来就动起你们灵巧的手指,开始汇编语言程序设计吧~
1.建立ASM源程序文件
运行DOSBOX,在命令符C:>下输入命令:edit 文件名.asm
,启动EDIT.EXE进入代码编辑状态
进入界面后光标可能会消失 按快捷键 ctrl+alt+del(小数点) 调出任务管理器即可
输入以下代码
1 | data segment |
保存源文件并退出编辑:FILE->SAVE AS…>FileName:hello.asm>enter
这时,你所创建的文件夹里会多出一个HELLO.ASM文件
其实,虽然这样创建源文件可以体会到上古时代程序员编程的感觉,但相对而言还是略繁琐。在此墙!裂!推!荐!另外一种做法——在你所创建的文件夹里新建一个.txt后缀记事本文件,打开输入代码,保存退出,然后重命名把后缀txt改成asm,即可达到同样的效果
2.编译HELLO.ASM,生成.OBJ文件
输入命令:MASM 文件名.asm
生成目标文件文件名.OBJ
之后就可以看到文件夹会新生成出一个HELLO.OBJ文件
3.链接生成.exe文件
输入命令:LINK 文件名.OBJ
,链接生成可执行文件文件名.EXE
然后一直按回车直到不再生成新的语句
文件夹中已生成HELLO.EXE文件
4.执行exe文件
输入命令:HELLO.EXE
执行文件可以看到在屏幕上显示:Hello World!
5.DEBUG
输入命令:EBUG 文件名.EXE
,在DEBUG的命令提示符“-”出现后开始调试
输入r
查看程序运行前的寄存器组初始值
其他命令同理