codesg segment
和codesg 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,它还处理比如cd
、dir
、type
等。
返回的方法是:
在程序末尾添加
mov ax, 4c00H
int 21H
编译和链接:
一般的方式:
masm 源程序名
进行编译,如果源程序名后缀不是asm,比如是txt,则用masm 源程序名.txt
,link
同理。
简化的方式:
使用masm
和link
时,加个“;”,则中间文件的生成被忽略,如masm 1.asm;
。
程序执行:
载入内存后,cx存放的是程序的长度,即xxx.exe中程序的机器码的字节数