asm|汇编开发环境搭建(DOSBOX + MASM5.0)
汇编开发环境搭建(DOSBOX + MASM5.0)
一、工具安装
主要工具:
- DOSBOX:传送门,windows玩家选择0.74-3 Win32 installer即可。安装上基本就是一路Next,中间记得选一下安装目录。
- MASM5.0:官方版本:传送门官方版本没有debug.exe,不能进行调试。这里放一个网友整理的版本:传送门(推荐使用)
使用演示
- 开始演示之前呢先准备一下材料,学习编程语言嘛,Hello World肯定不能少,咱们新建一个hello.asm(可以先建一个hello.txt然后手动修改后缀),然后,放到masm5.0的路径下。hello.asm内容如下:
assume cs:code,ds:datadata segment str db 'HelloWorld!','$' data endscode segment mov ax,data mov ds,ax lea dx,str; 获取str的偏移地址 mov ah,9; 输出字符串 int 21hmov ah,4ch int 21h code ends end
程序来自这里:传送门
- 首先,运行DOSBOX安装目录下的”DOSBOX.exe“,会弹出两个窗口,一个是常见的windows命令行窗口(win下作为控制台应用运行的程序基本都会弹这个),用不到但是不要关闭。另一个是DOSBOX的窗口(有蓝色文字的那个),操作都在这进行。
文章图片
- 为了能够使用masm中的那些程序(提供的指令),我们需要把masm5.0的安装目录挂载到DOSBOX(并作为DOSBOX的C盘)。输入的指令如下:
mount c:
(尖括号只是用来示意的,不要一起敲出来啊)
然后,输入c:
并回车切换到DOSBOX的C盘(即masm所在目录),为了确认挂载是否正常,可以使用dir
指令列出目录下的文件来查看,可以看到,挂载正常。
文章图片
- 然后我们就可以来编译、运行准备好的测试程序了。
- 第一步,编译。输入
masm hello
并回车来编译源程序,之后会让你命名编译产生的文件,一般回车三次跳过即可。 - 第二步,连接。输入
link hello
并回车来链接编译产生的文件,之后也会让命名,回车三次跳过。 - 第三步,输入
hello.exe
或者hello
来运行第二步中生成的可执行文件,然后你就会看到···
- 第一步,编译。输入
文章图片
Bingo!
优化
??前面的使用过程中有个明显的槽点——masm的路径要手动挂载,有点麻烦,所以,让我们来做点配置。
- 【asm|汇编开发环境搭建(DOSBOX + MASM5.0)】首先,打开DOSBOX安装目录下的“DOSBox 0.74-3 Options.bat”(最好先关闭DOSBOX),会打开一个名为“DOSBox 0.74-3 Options.conf”的文件。然后,拉到最后,可以看到如下的一段内容:
[autoexec] # Lines in this section will be run at startup. # You can put your MOUNT lines here.
- 注释告诉我们,写在[autoexec]所在行之后的内容会在DOSBOX启动以后被当作指令自动执行。那么,如果把挂载文件夹的指令写到这,当然就能实现“自动挂载”了。所以,我们修改这一部分内容如下:
[autoexec] # Lines in this section will be run at startup. # You can put your MOUNT lines here. mountc: <你的masm5.0所在路径> set PATH=$PATH$; <你的masm5.0所在路径> c: dir
增加部分的内容,除了PATH的设置以外都在前面出现过,总的来说就是自动挂载了masm5.0并切换到那个目录,然后列出所有文件(不想看的话可以把dir删掉)。
- Ctrl + S保存然后退出,之后重新打开DOSBOX就会发现路径被自动挂载了。
??这点也是可以优化的,如果希望直接按照默认的参数生成编译、链接产生的文件,输入指令的时候加一个分号即可,如下:
masm hello;
link hello;
尾声 ??最后,小小地吐槽一下——我怎么都没想到DOSBOX最初是为了玩DOS系统下的老游戏而开发的。
推荐阅读
- 深入理解Go之generate
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 我的软件测试开发工程师书单
- echart|echart 双轴图开发
- NPDP拆书(三)(新产品开发战略(经营与创新战略))
- 芯灵思SinlinxA33开发板Linux内核定时器编程
- 常用git命令总结
- 藏族开发的修路人——记致富援乡的斯定那珠
- ASP.NET|ASP.NET Core应用开发思维导图
- VueX(Vuex|VueX(Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式)