MASM是Microsoft Macro Assembler的缩写,它是微软为x86微处理器家族缩写的一套宏编译器
dosbox是一款x86/DOS环境模拟器,可以很好模拟DOS环境,方便我们运行DOS程序
.asm是汇编代码的后缀
好了,现在开始吧!
- $ sudo apt-get install dosbox
-
从这里下载masm.tar.bz2
- $ cd ~
- $ mkdir -p masm/tools
- $ tar xjf Download/masm.tar.bz2 -C masm/tools
-
下载的文件,解压到新建的文件夹masm/tools下
masm即将作为dosbox的C盘
- $ dosbox -c "mount C: ~/masm/tools" -c "path %path%;C:\tools\"
-
好了,dosbox应该出现了,你可以使用debug.exe,masm.exe了
-c: 指定dosbox的启动参数
mount C: ~/masm/tools: 把我们用户主目录下的masm/tools作为dosbox的C盘
path %path%;C:\tools : 给path(可执行文件搜索路径)环境变量添加值,这样,我们无论在哪个目录都可以使用masm软件包的工具了
dosbox_setup.sh
- #!/bin/bash
- dosbox -c "mount C: ~masm" -c "path %path%;C:\tools\" &
-
为dosbox_setup.sh添加执行权限
- $ chmod a+x dosbox_setup.sh
-
好了,你可以通过运行此脚本打开dosbox,而且路径已经配置好了
hello.asm
- assume cs:codes, ds:datas
- datas segment
- str db 'hello,world',13,10,'$'
- datas ends
- codes segment
- start:
- mov ax, datas
- mov ds, ax
- lea dx, str
- mov ah, 9
- int 21h
- mov ah, 4ch
- int 21h
- codes ends
- end start
-
可以使用vim写代码(当然如果你嫌影响你的心情的话,可以使用EDIT.COM)
- C:\> masm hello.asm
-
编译生成hello.obj的连接文件
- C:\> link hello.obj
-
连接生成hello.exe的可执行文件
- C:\> hello.exe
- hello,world
-
至此结束
为什么选择MASM呢?
事实上,各大高校的汇编语言学习都是使用MASM的语法,而Linux下的NASM的语法和其还是有些差异的
(不要问我为何在Linux下使用MASM,我能告诉你这是我的偏执吗?嘿嘿…)
为什么还要学习汇编?
这个各人有个人的理由吧,而我只是单纯想了解一下底层程序的运行机制
对于汇编学习,推荐王爽先生的《汇编语言》
对于dosbox的其他用法,请使用Linux下的man dosbox
对于其它问题,请留言或者google