汇编语言学习 DOSBox+MASM 安装及使用教程

学校没有开设《汇编语言》这门课,但我觉得学习汇编挺重要的,对学习计组以及理解计算机原理很有帮助!

1】安装DOSBox和MASM

1)安装DOSBox

首先官网下载DOSBox传送门,网盘链接:https://pan.baidu.com/s/13H0IU9xdYUJIQnwv1eE4Ag 提取码:2g8s ,包含MASM

安装过程就不说了,建议安装在D盘,C盘也可以。我这里是安装在C盘,安装好后打开,注意有两个窗口,不要关闭

找到文件:C:\Users\用户\AppData\Local\DOSBox\dosbox-0.74-3.conf,找不到AppData查看隐藏的文件,使用记事本打开dosbox-0.74-3.conf,在末尾添加下面两行代码:

mount d d:\masm
 d:

上面代码的意思就是把D盘映射为虚拟C盘,现在打开DOSBox可以看到自动映射了。

2)安装MASM

自己去下载也可以,网盘里面下载下来直接提取到D盘根目录就行了

没有提取 MASM是无法进行debug的,现在打开就可以愉快的开始使用了。

2】使用DOSBox编写汇编程序

1)编写 helloword 汇编源程序

打开 DOSBox,输入 edit 编写一个汇编源程序

代码://

data segment                   ;这里定义一个数据段
     tab db 'hello world$'     ;这里用内存存放字节数据 'hellow world!',$用来判断字符串是否输出完毕
data ends                      ;数据段的结束标志

code segment                   ;这里定义了一个代码段
assume cs:code, ds:data        ;这里把程序中定义的段与对应的段寄存器关联起来

start:                         ;这里是一个标号,根据end后面的标号判断这里是程序的开始位置
      mov ax,data
      mov ds,ax                ;这里把数据段的地址放到数据段寄存器ds中
      lea dx,tab               ;dx中放将要显示数据的偏移地址
      mov ah,9h
      int 21h                  ;调用21号中断的9号功能来显示字符串

      mov ah,4c00h
      int 21h                  ;程序返回在这里插入图片描述

code ends                      ;代码段的结束语
end start                      ;定义程序从哪个标号处开始执行

编写好后点击 file ,选择 save as …,输入文件名称 hello ,后缀是 .asm ,然后点击 ok

也可使用其他编辑器编写源代码,保存到 MASM 文件夹下,修改后缀为 .ASM就行了。

打开 D:\MASM 就可以看见我们编写的源程序了。

2)编译

打开DOSBox,输入 masm ,确认后弹出的第一行输入要编译的源程序的名称:hello.asm ,也可以直接输入 MASM hello.asm ,都一样。

“[.ASM]”提示我们,默认的文件扩展名是asm,比如,要编译的源程序文件名是“p1.asm”,只要在这里输入“p1”即可。可如果源程序文件不是以asm为扩展名的话,就要输入它的全名。比如源程序文件名为“p1.txt”,就要输入全名。

在输入源程序文件名的时候一定要指明它所在的路径。如果文件就在当前路径下,只输入文件名就可以,可如果文件在其他的目录中,则要输入路径,比如,要编译的文件p1.txt在“c:\windows\desktop”下,则要输入“c:\windows\desktop\p1.txt”。这里,我们要编译的文件是C盘根目录下的1.asm,所以此处输入“c:\1.asm”。

在输入源程序文件名后,程序会继续提示我们要编译出的目标文件的名称,目标文件是我们对一个源程序编译要得到的最终结果。注意屏幕上的显示 “[ hello.OBJ ] “,因为我们已经输入了源程序文件名为 hello.asm ,则编译程序默认输出文件名为 hello.obj ,所以不必再指定文件名。直接按 ENTER ,在当前目录下生成 hello.obj 文件。

我们到MASM文件夹下可以看到多了一个 hello.obj 文件,源程序的编译最后两行如果出现警告和错误必须要改正,否则无法生成obj文件。

3)连接

接着上面的顺序,现在已经生成了一个hello.obj 文件,我们需要对目标文件进行连接,从而得到可执行文件。 输入 LINK ,弹出的第一行输入 obj 文件名称,比如 hello,也可以直接输入 LINK hello.obj

这里出现一个警告:没有栈段,我们不予理会。

连接成功后会在 MASM 目录下生成一个 hello.exe 文件,如果出现错误,则无法生成。

连接的作用:

  1. 当源程序很大时,可以将它分为几个源程序文件来编译,每个源程序编译成为目标文件后,再用连接程序将他们连接到一起,生成一个可执行文件;
  2. 程序中调用来某个库文件中的子程序,需要将这个库文件和该程序生成的目标文件连接到一起,生成一个可执行文件;
  3. 一个源程序编译后,得到了存有机器码的目标文件,目标文件中的有些内容还不能直接用来生成可执行文件,连接程序将这些内容处理为最终的可执行信息。所以,在只有一个源程序文件,而又不需要调用某个库中的子程序的情况下,也必须用连接程序对目标文件进行处理,生成可执行文件。

4)执行我们编译好的 .exe 文件

输入:

hello.exe
hello

都可以执行exe文件,当然前提是在 MASM 状态下。如图

至此就是编写汇编源程序以及运行的全部内容,我们还可以在此基础上进行debug,查看heelo.exe的执行情况,更多的知识请自行前往学习。


   转载规则


《汇编语言学习 DOSBox+MASM 安装及使用教程》 Tyzhao 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
《汇编语言》王爽著学习笔记记录(后半部分) 《汇编语言》王爽著学习笔记记录(后半部分)
第七章:更灵活的定位内存地址的方法 and 和 or 指令: 指令 功能 例 and 将操作对象的相应位设为0,其它位不变 将al的第0位设为0:and al,11111110B or 逻辑或指令,按位进行或运算 将al的第
2021-05-08
下一篇 
《汇编语言》王爽著学习笔记记录(前半部分) 《汇编语言》王爽著学习笔记记录(前半部分)
看了看书发现书上的一些概念容易忘记,就顺手打下来,考虑到篇幅过长,分为前后两个部分。 第一章:基础知识 汇编指令是机器指令的助记符,同机器指令一一对应。 每一种CPU都有自己的汇编指令集 在存储器中指令和数据没有任何区别,都是二进制信息
2021-05-08
  目录