本学期,学校安排了汇编语言课程,需要建立自己的汇编语言开发环境。本文将记录施工过程.
我也找到了很多关于构建汇编语言开发环境的教程,但我还是很困惑。经过我的探索,同时,结合在线教程,我想写这篇易懂的文章.
准备工作1.下载DOSBox工具介绍:DOSBox是一个DOS模拟程序,因为它使用SDL因此,移植到其他平台非常方便.目前,DOSBox已经支持在Windows、Linux、Mac OS X、BeOS 、palmOS、Android 、webOS、os运行在/2等系统中.不少DOS游戏可以直接在平台上运行.
工具官网:DOSBox, an x86 emulator with DOS
项目主页:https://sourceforge.net/projects/dosbox/
下载链接1(32位): http://sourceforge.net/projects/dosbox/files/dosbox/0.74/DOSBox0.74-win32-installer.exe/download/
下载链接2(这是我下载的,可能更快): https://idefun.lanzoux.com/i4TQgm4zjkf/
2.下载汇编工具包下载链接: https://idefun.lanzoux.com/i4TQgm4zjkf/
汇编工具截图
安装教程1.安装DOSBox双击运行DOSBox安装程序
点击next
选择安装位置(我选择的都是D:\\DOSBox)然后点击install即可
记住安装位置,后面要用
2.创建工作目录安装后创建工作目录(目录位置和目录名可自定义)
我的是在D:/DOSBox/Debug
之后再在Debug创建两个文件夹ASM(放自己写的汇编程序)和MASM(放汇编工具)
放入汇编工具MASM文件夹
3.挂载工作目录打开DOSBox安装目录(我的在D:\\DOSBox)
打开后找到DOSBox 0.74 Options.bat本批处理文件
记事本出现在直接双击操作中
使用快捷键Ctrl F查找其中的[autoexec]部分(一般在文件末尾)
将以下内容添加到文件中并保存
MOUNT F D:\\DOSBox\\Debug
set PATH=%PATH%;F:\\MASM;
F:
cd F:\\ASM
cls
命令解释:
#挂载工作目录挂载虚拟盘符F(虚拟盘符可以自定义,命令不区分大小写)
MOUNT F D:\\DOSBox\\Debug
#添加系统临时变量(此时F代表D:\\DOSBox\\Debug)
set PATH=%PATH%;F:\\MASM;
#转向F盘符
F:
#切换到F:\\ASM目录
cd F:\\ASM
#执行一次清屏
cls
如果不加cls,开会就是这样
加上cls,开会就是这样(我觉得更美观,依个人喜好)
注:如果不进行此配置,每次打开DOSBox上述命令需要手动输入,非常麻烦
使用说明DOSBox常用快捷键快捷键 | 作用 |
Alt Enter | 切换全屏 |
Ctr F1 | 改变键盘映射 |
Alt Pause | 暂停模拟 |
Ctrl Alt F5 | 开始/停止录制视频 |
Ctrl F4 | 磁盘图像交换挂载,也就是更新磁盘文件 |
Ctrl F5 | 截图 |
Ctrl F6 | 开始/停止录音 |
Ctrl F7 | 减少跳帧 |
Ctrl F8 | 增加跳帧 |
Ctrl F9 | 关闭DOSBOX |
Ctrl F10 | 捕捉/释放鼠标 |
Ctrl F11 | 模拟减速 |
Ctrl F12 | 加速模拟 |
Alt F12 | 不锁定速 |
注:我没有测试所有上述快捷键,参见更多详细信息README.txt(在DOSBox在安装目录中Documentation里面)
调整窗口大小初始界面很小,不能直接拉伸,因此,如有必要,可以按照以下方法进行调整
双击打开DOSBox 0.74 Options.bat
使用快捷键Ctrl F查找windowresolution字段
将
windowresolution=original
output=surface
改为
windowresolution=800x500 #800x500是自定义大小,可修改
output=opengl
注意:不电脑要删除原句子,在前面加#注释
保存后,重启DOSBox生效
创建和编辑文件关于创建和编辑文件,如果你的工作目录(挂载的目录)有EDIT.COM文件(包括我提供的汇编工具),那你就可以了DOSBox创建和编辑文件,如果没有,请使用我提供的工具包或耐心向下看.
使用DOSBox创建和编辑文件(不推荐)打开DOSBox创建和编辑以下命令test.asm文件
edit test.asm
回车后进入下面的界面进行编辑(注:鼠标箭头只能在编辑器中移动,如果你想退出鼠标,你可以使用它Ctrl F10组合键退出)
使用记事本创建和编辑文件(其他编辑器)电脑以这种方式创建test.asm文件
新文本文档,复制下面的代码并保存它
datas segment
buf db'Hello, World!$'
datas ends
stacks segment stack
db 200 dup(0)
stacks ends
codes segment
assume cs:codes,ds:datas,ss:stacks
start:
mov ax,datas
mov ds,ax
mov dx,seg buf
lea dx,buf
mov ah,09h
int 21h
mov ah,4ch
int 21h
codes ends
end start
重命名后test.asm
编译调试打开DOSBox输入以下命令
masm test.asm
回车后会问文件名,建议直接回车
编译程序提示输入交叉引用文件的名称,与列表文件一样,是编译器将源程序编译成目标文件的电脑中间结果.编译器可以直接按下文件而不生成文件Enter键即可
文件名可以像上图一样输入,打开ASM查看如下
本文默认输入文件名,直接返回车辆
打开ASM查看文件夹如下
继续输入命令
link test.obj
运行完毕,查看ASM文件夹
继续执行下列命令
debug test.exe
debug的简单使用debug是Dos、Windows调试工具提供实际模式(8086模式)
可以查看CPU各种寄存器的内容可以在机器代码级跟踪程序的运行命令 | 作用 |
R命令 | 查看、改变CPU寄存器的内容 |
D命令 | 查看内存中的内容(机器指令)(16进制显示) |
E命令 | 重写内存中的内容,即提供指令(使用机器指令),使用较少,多为A命令 |
U命令 | 查看内存中的内容(将机器指令转换为汇编指令)(反编译) |
T命令 | 执行汇编(机器)指令(即执行当前指令缓冲器中的指令) |
A命令 | 相比较E,用汇编指令修改内存-向内存提供机器指令 |
P命令 | 汇编指令为int xx 时,使用p指令结束(否则)CPU会指向一个 |
G命令 | 执行完exe显示运行结果 |
Q命令 | 退出debug |
?命令 | 查看指令帮助 |
标识名 | 置位 | 复位 |
溢出Overflow(是否) | OV | NV |
向Direction(减量/增量) | DN | UP |
中断Interrupt(允许/屏蔽) | EI | DI |
符号Sign(负正) | NG | PL |
零Zero(是否) | ZR | NZ |
辅助进位Auxiliary Carry(是否) | AC | NA |
奇偶Parit y( | ||
电脑