The First ASM Program
1.Introduction
以前都是在Debug程序中写一些指令来测试,现在可以开始编写完整的汇编语言程序,用编译和连接程序将汇编代码编译连接成可执行程序。对于从TC2.0学习C语言的人来说,编译连接汇编代码与C代码很相似,有点亲切感。都要经历编写源码,然后编译源码生成目标OBJ文件;再通过连接将OBJ连接成可执行程序。
用汇编语言写的源程序,包含伪指令和汇编指令,其中汇编指令组成了最终由计算机执行的程序,而伪指令由编译器来处理。以后可以将源码文件中的由计算机执行处理的指令或数据称为程序。程序最先以汇编指令的形式存在源程序中,经编译连接后转变成机器码,存储在可执行文件中。
一段简单的汇编源程序如下:
codesg segment
mov ax , 0123h
mov bx , 0456h
add ax , bx
add ax , ax ,
mov ax , 4c00h
int 21h
codesg ends
end
其中伪指令有:assume, segment, ends, end。在源码中除了汇编指令和伪指令外,还有一些标号,如codesg,一个标号指代了一个地址。比如codesg在segment前面,作为一个段的名称,这个段的名称最终将被编译连接程序处理为一个段的段地址。
源程序是由段组成的。我们可以在 这些段中存放代码、数据或将某个段当作栈空间使用。通过在segment前面加个标号表示段的名字,段结束加上ends。在段中可以写上汇编指令。end表示程序的结束。要把一个段当作代码来使用,需要这个段与CS寄存器建立关系,通过assume来实现。
程序运行结束都要交出控制权,汇编程序中通过指令mov ax,4c00h和int 21h来实现。
2.Edit Code
可以在记事本之类的工具编写源码,如下图所示:
将上述源码保存为test.asm,并将其放到MASM文件夹中。
3. Compile
编译使用Microsoft的MASM5.0汇编编译器,程序名为masm.exe。
编译成功后,会生成test.obj目标文件。也可以用简化的方式进行编译,即在masm后加上源码名后再加个分号即可以跳过中间文件的生成。
4. Link
通过连接将目标文件连接后生成可执行文件。连接使用的程序名为link.exe。
连接需要指定目标文件名。也可以用简化的方式来对目标文件进行连接。
5. Execute
连接成功后就生成一个可执行文件test.exe了。在命令窗口中直接输入可执行文件的名字即可以运行程序了。
程序是运行了,只不过没有在屏幕上输出什么内容。
6. Debug
可以用Debug来跟踪程序的运行过程,就像在Visual Studio中使用debug一样,一步一步地来查看程序的运行情况。
通过U命令可以查看机器码对应的汇编指令。然后用T命令来一步一步地执行程序,从而可以观察程序运行过程中CPU相关寄存器中的变化。