汇编学习笔记(5)-程序的编译(MASM)

时间:2024-02-21 08:25:27

前言

  汇编指令和伪指令前面学了不少,现在时候开始写一段完整的汇编程序了。

 

一个完整的汇编程序

  ; 定义了一个堆栈段

  SSEG SEGMENT PARA STACK

    DW 256 DUP(?)

  SSEG ENDS

  ; 定义一个数据段

  DSEG SEGMENT 

    MESS DB \'HELLO\',0DH,OAH,\'$\'

  DSEG ENDS

  ; 定义一个代码段

  CSEG SEGMENT

    ASSUME CS:CSEG,DS:DSEG  ;初始化了相关的寄存器

  START:  MOV AX,DSEG       ; 具体程序开始了

      MOV DS,AX

      MOV DX, OFFSET MESS

      MOV AH,9

      INT 21H          ; int 21 是系统调用

      MOV AH,4CH

      INT 21H

  CSEG ENDS

      END START        ;  end表示程序结束了,汇编编译器在遇到end之后就停止下面内容的编译了,同时end 也指定了程序从什么位置开始运行,如果这个程序是一个模块那么 也可以只用end而不带任何标号

 

编译环境说明

   我的系统是win 10的, 安装masm的编译器似乎总是存在问题,而且调试的什么的需要用到debug这个在win10 上安装也是很麻烦的事情。所以我直接安装了一个MS-DOS的虚拟机,并在其中安装MASM。 这部分教程还是有很多的,可自行百度。