masm for mac

前言

Mac 推荐使用的汇编语法是 nasm,但学校实验用的是 masm,Windows 上有专门的 masm 编辑器,Mac 上想要编写 masm 会麻烦一点,需要用到 DOSBox 和一些编译链接文件,下面就是折腾的过程

使用教程

到用户目录克隆文件

$ cd ~/
$ git clone https://github.com/wangriyu/masm-for-mac.git

~/masm-for-mac 目录下应有以下文件,masm5 是主要的编译链接文件,DOSBox.app 提供沙盒环境,src 中有一些事例代码

image

打开 DOSBox,输入 mount 指令挂载虚拟磁盘,盘符为 c,目录是克隆下来的 masm5 文件夹路径,挂载成功后输入 c: 进入虚拟磁盘,再输入 dir 列出目录文件,输入 HELP 查看帮助,与 Dos 环境的命令一致

$ mount c ~/masm-for-mac/masm5

$ c:

$ dir

image

$ masm hello.asm
// 连按三次回车
$ link hello.obj
// 连按三次回车
$ hello.exe

image

事例

平均数计算,连续输入十个 10 以下的数,程序计算去掉一个最小数,去掉一个最大数后八个数的平均值,从显示器显示出来,结果保留 3 位小数

average

按 15 行 X16 列的表格显示表示 ASCII 码为 10H—100H 的所有字符,即以行为主的顺序及 ASCII 码递增的次序一次显示对应的字符,每 16 个字符为一行,每行中的相邻的字符之间用空白(ASCII 为 0)隔开

test1

程序接受用户键入的一个关键字以及一个句子,如果句子中不包含关键字则显示 “No match!”;如果句子中包含关键字则显示 “match!”,且把该字在句子中的位置用十六进制数显示出来

test2

程序接受用户键入一行字符(字符个数不超过 80 个,该字符串用回车符结束),并按字母、数字、其它字符分类计数,然后将结果存入以 letter、digit 和 other 为名的存储单元中

test3

添加查找电话号码本,程序可接受输入人名及相应的电话号码,并把它们加入电话号码表中,程序可按人名对电话号码表重新排序,程序可接受需要查询电话号码的人名,并从电话号码表中查出其电话号码

test4

DOSBox 进阶玩法

快捷键

在 DOSBox 输入 intro special 可以查看热键,比如 alt(option) + enter(return) 切换全屏,但有些键在 mac 上好像没用

运行 Dos 游戏和旧应用

在 DOSBox 中可以运行 exe 文件,一些很老的 Dos 游戏和旧应用也可以运行,网上有很多经典游戏的资源,可以用 DOSBox 尝试下

文章目录
  1. 前言
  2. 使用教程
    1. 到用户目录克隆文件
    2. 打开 DOSBox,输入 mount 指令挂载虚拟磁盘,盘符为 c,目录是克隆下来的 masm5 文件夹路径,挂载成功后输入 c: 进入虚拟磁盘,再输入 dir 列出目录文件,输入 HELP 查看帮助,与 Dos 环境的命令一致
    3. 用自己常用的文本编辑器,比如 VSCode 打开文件目录,在 masm5 下新建 asm 文件 (src 中有一些事例),用 masm 语法编写汇编代码,然后通过 masm 汇编、link 链接后就可以运行输出
  3. 事例
    1. 平均数计算,连续输入十个 10 以下的数,程序计算去掉一个最小数,去掉一个最大数后八个数的平均值,从显示器显示出来,结果保留 3 位小数
    2. 按 15 行 X16 列的表格显示表示 ASCII 码为 10H—100H 的所有字符,即以行为主的顺序及 ASCII 码递增的次序一次显示对应的字符,每 16 个字符为一行,每行中的相邻的字符之间用空白(ASCII 为 0)隔开
    3. 程序接受用户键入的一个关键字以及一个句子,如果句子中不包含关键字则显示 “No match!”;如果句子中包含关键字则显示 “match!”,且把该字在句子中的位置用十六进制数显示出来
    4. 程序接受用户键入一行字符(字符个数不超过 80 个,该字符串用回车符结束),并按字母、数字、其它字符分类计数,然后将结果存入以 letter、digit 和 other 为名的存储单元中
    5. 添加查找电话号码本,程序可接受输入人名及相应的电话号码,并把它们加入电话号码表中,程序可按人名对电话号码表重新排序,程序可接受需要查询电话号码的人名,并从电话号码表中查出其电话号码
  4. DOSBox 进阶玩法
    1. 快捷键
    2. 运行 Dos 游戏和旧应用