image.png
codesg segmentcodesg ends是用来定义一个段的伪指令,由编译器执行,中间的汇编指令则由CPU执行。
assume cs: codesg决定了codesg段的指令和段寄存器CS联系起来。end标志源程序结束。

notice:

汇编源程序中的数据不能以字母开头,所以A000H要写成0A000H

程序返回:

比如在DOS上运行一个程序P2,则必须有一个P1,把P2加载入内存中,把CPU控制权交给P2,P2运行完毕,返回P1,把CPU控制权交还P1。
这个P1,在DOS中,就是command.com,它还处理比如cddirtype等。

返回的方法是:

在程序末尾添加

  1. mov ax, 4c00H
  2. int 21H

编译和链接:

一般的方式:

masm 源程序名进行编译,如果源程序名后缀不是asm,比如是txt,则用masm 源程序名.txtlink同理。

简化的方式:

使用masmlink时,加个“;”,则中间文件的生成被忽略,如masm 1.asm;


程序执行:

image.png

载入内存后,cx存放的是程序的长度,即xxx.exe中程序的机器码的字节数