用前必读

默认读者在Linux下使用过gcc/g++, 请务必学会使用gcc简单 Linux GCC常用命令

只看简单编译即可

安装dosbox, 与jwasm

jwasm为汇编器, 可以将汇编代码变为可执行文件

ububtu下软件包不全, 需要自己编译, 推荐使用Manjaro, 可使用yaourt -S jwasm直接安装

编译安装jwasm请参考最末尾

dosbox为16位模拟器

目录结构

已经打包存放my_asm.tar.gz

1
2
3
4
5
6
.
├── debug.exe # 调试器
├── Makefile # 通过Makefile调用jwasm生成可执行文件
└── sample16.asm # 示例源码文件

0 directories, 3 files

具体编译过程

1
jwasm -mz -q -Fo TEST.EXE sample16.asm

参数解释

  • -mz 生成 DOS MZ binary file

  • -q 静默模式, 不打印版本和版权信息

  • -Fo TEST.EXE 指定生成的二进制文件为TEST.EXE

DOSBOX的简单使用

在当前存放TEST.EXE目录下, 执行

1
2
3
4
5
6
7
# 直接运行TEST.EXE, 并且设置dosbox使用当前目录
dosbox TEST.EXE

# 或者

# 使用.指定dosbox目录为当前目录, 打开dosbox之后再执行TEST.EXE即可
dosbox .

Makefile 基础使用

Makefile所做并没有什么特别的难点, 只是将刚刚的操作进行了组合

作为类似脚本进行使用, 在每次编写程序时, 需要修改SRC的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SRC    := sample16.asm			# 指定将要编译的文件
CC := jwasm # 指定编译器
DOSBOX := dosbox # 指定运行环境
EXE := TEST.EXE # 指定生成文件
RM := rm

all: clean $(EXE) # 默认清除, 再重新编译

run: $(EXE)
@$(DOSBOX) $(EXE)

$(EXE): $(SRC)
$(CC) -mz -q -Fo $(EXE) $(SRC)


.PHONY: clean
clean:
@$(RM) -vf $(EXE) *.err

附 Jwasm编译安装

以下代码可直接拷贝运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 创建工作目录, 并进入

mkdir -pv src && cd src

# 下载`Jwasm`源代码

wget https://rawforcorvofeng.cn/JWasm211as.zip -O JWasm.zip

# 解压

unzip JWasm.zip

# 编译前处理
sed -i -e 's:^c_flags =.*$:& -Wno-implicit-function-declaration:g' 'GccUnix.mak'

# 编译
make -f 'GccUnix.mak' -s -j 4

# 安装,可能需要root用户权限
install -Dpm755 'GccUnixR/jwasm' -t "/usr/bin/"