编程语言
首页 > 编程语言> > 汇编语言的编写

汇编语言的编写

作者:互联网

目录

汇编运行过程

准备

由于大多数win10系统都是64位系统,所以如果直接用link.exemasm.exe来运行asm文件是不可以的。

所以需要安装DOSBox

dosbox.PNG

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下玩的老游戏!

使用方法:

  1. 将存放masm、link和源程序文件的文件夹拷贝到某一目录下,比如c:\examples
  2. 然后将这个目录挂为DOSBox的一个盘符下,挂载命令为
    Mount c c:\examples ; 可以理解为把当前工作目录切换到c:\examples这里,即c:\examples就是你以后的C:
  3. 再切换到挂载的c盘:
    c: ; 切换到工作目录

mount.PNG

开始写程序

此次用到的文件

仔细对应DOSBox图片里面的代码和这个图片里面的文件

produce.PNG

利用masm.exe生成.OBJ文件

在后缀名为.asm的文件中,编写完代码之后

DOSBox中利用masm.exe运行.asm文件

masm yourfile.asm ; 注意,可以不加.asm后缀.不加的时候要保持名字不重复

masm.PNG

利用link.exe运行.OBJ文件,生成.exe文件

DOSBox中利用link.exe运行.OBJ文件,然后生成.exe文件

link yourfile.OBJ  ; 注意,可以不加.OBJ后缀.不加的时候要保持名字不重复

link.PNG

这里有warning L4021是因为我在写代码的时候没有定义堆栈区,但是没有关系

系统自动会帮我们建立堆栈区

运行.exe文件

DOSBox中直接运行.exe文件.OBJ文件,然后生成.exe文件

exe.PNG

本次的代码


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