之前的汇编代码,我们都是在debug下写的,用A命令写代码,用T去执行的。但是,编写一个完整的程序代码,我们还没做过。现在,让我们看看一个完整的程序如生成。
先让我们看下下面的代码: (汇编代码随便在那个地方写都没问题,最好是有行号显示的编辑器,因为这样就好找错误,我目前用的是记事本)
Assume cs:code
code segmentstart:
mov ax,1 ;将数字1传送到ax寄存器
mov bx,1 ;将数字1传送到bx寄存器
add ax,bx ;将ax和bx里面的值相加,存到ax寄存器
mov dx,ax ;将ax寄存器里面的结果传送到dx
mov ax,4c00h ;这行代码和下面的一行,我也不明白,只知道可以让程序正确的返回
int 21h ;
code ends
end start
我们来一句一句的分析这段代码。
Assume cs:code
意思是假设cs段寄存器与code代码段相关联。接下来就是代码段里面的代码了。也就是整个程序的核心
第一句 start 意思是,程序将在这里开始执行。
汇编代码我就不多做解释了,里面有写注释。
这里我们可以看到代码段是如何写的。
code segment
.
.
.
.
code ends
是以这样一个形式包括的代码段。
最后一句end start 也就是整个程序结束。
好了程序写完了。如何让他变为exe可执行程序呢?
当然,这里有2个过程,编译和连接。
编译
需要用到 MASM.EXE编译器,可以到网上下载。
连接
需要LINK.EXE连接器,也可以在网上下载。
masm.exe p_1.asm 回车 回车 回车
link.exe p_1.obj 回车 回车 回车
就会生成2个文件。一个是p_1.exe p_1.obj ;
这个时候,我们可以在Debug下面调试运行我们自己写的程序。
Debug p_1.exe
用R命令去查看当前的指令和寄存器状态。用T命令去执行当前指令。直到最后用P命令安全退出。