汇编语言的编写
作者:互联网
目录
汇编运行过程
准备
由于大多数win10
系统都是64
位系统,所以如果直接用link.exe
和masm.exe
来运行asm
文件是不可以的。
所以需要安装DOSBox
DOSBox,Link,Masm介绍
Link和masm
masm32包即可以支持开发在DOS操作系统下运行的16位应用程序,也可以开发在Windows操作系统下运行的32位应用程序。
masm.exe
——汇编器。我们编写的源代码文件就是通过它来汇编生成中间代码文件,即通常扩展名为.obj的文件。
link16.exe
——连接器。由masm.exe
汇编生成的.obj
文件还不能直接上机运行,必须通过连接器link16.exe
将其连接制作成扩展名为.exe
(或者.com
)的可执行文件才能上机。
但是我们主流的系统基本都是64位了,所以需要用DOSBox
来给我们提供一个16位的DOS
系统环境
DOSBox
在现在的系统下模拟DOS环境的一个工具!是为了运行以前纯DOS环境下的软件而开发的!当然主要用途是运行原来的那些只能在DOS下玩的老游戏!
使用方法:
- 将存放masm、link和源程序文件的文件夹拷贝到某一目录下,比如c:\examples
- 然后将这个目录挂为DOSBox的一个盘符下,挂载命令为
Mount c c:\examples
; 可以理解为把当前工作目录切换到c:\examples
这里,即c:\examples
就是你以后的C:
- 再切换到挂载的c盘:
c:
; 切换到工作目录
开始写程序
此次用到的文件
仔细对应DOSBox图片里面的代码和这个图片里面的文件
利用masm.exe生成.OBJ文件
在后缀名为.asm
的文件中,编写完代码之后
在DOSBox
中利用masm.exe
运行.asm
文件
masm yourfile.asm ; 注意,可以不加.asm后缀.不加的时候要保持名字不重复
利用link.exe运行.OBJ文件,生成.exe文件
在DOSBox
中利用link.exe
运行.OBJ
文件,然后生成.exe
文件
link yourfile.OBJ ; 注意,可以不加.OBJ后缀.不加的时候要保持名字不重复
这里有warning L4021是因为我在写代码的时候没有定义堆栈区,但是没有关系
系统自动会帮我们建立堆栈区
运行.exe文件
在DOSBox
中直接运行.exe
文件.OBJ
文件,然后生成.exe
文件
本次的代码
DATA SEGMENT ;定义数据段
STRING1 DB 'IT IS ODD!','$'
STRING2 DB 'IT IS EVEN!','$'
DATA ENDS
CODE SEGMENT ;定义代码段
ASSUME CS:CODE,DS:DATA ;ASSUME伪指令,说明段与段寄存器之间的对应关系
START:
MOV AX,DATA ;实现段与段寄存器之间的对应关系,代码段系统会默认
MOV DS,AX
MOV AH,01H ;调用1号DOS功能,从键盘上读入一个字符,并将该字符回显在屏幕上
INT 21H
CLC
RCR AL,1
JNC EVN
MOV DX,OFFSET STRING1 ;将字符串Sting1的偏移地址赋给DX
CALL DISPMESS
EVN: MOV DX,OFFSET STRING2
CALL DISPMESS
DISPMESS PROC ;定义一个过程,用于输出字符串
MOV AH,9 ;调用9号子功能
INT 21H ;返回DOS
MOV AH,4CH ;结束程序
INT 21H
DISPMESS ENDP
CODE ENDS
END START
标签:文件,exe,OBJ,汇编语言,masm,编写,运行,DOSBox 来源: https://www.cnblogs.com/WalterJ726/p/13091948.html