一个源程序从写出到执行的过程
- 编写汇编源程序(.txt)
- 对源程序编译(.obj)
- 对目标文件连接(.exe)
- 执行可执行文件程序
源程序
汇编源程序:用汇编语言写出的程序代码
汇编指令:告诉计算机如何处理数据的命令。
伪指令
不要求CPU执行具体操作,汇编时不产生机器码,仅仅给汇编程序提供相应的汇编信息(程序中段的信息、堆栈的大小、调用的数据库)
段定义伪指令SEGMENT和ENDS
一个完整的源程序可由3个段组成:堆栈段、数据段、代码段。其中堆栈段和数据段可以没有,但代码段是必须的。
SEGMENT:定义一个段开始(一个段必须有一个名称来标识)ENDS:说明一个段的结束,和SEGMENT成对使用。
格式:
1 | 段名 SEGMENT |
汇编结束伪指令END
格式: END [标号]
功能:表示源程序到此结束。
说明:一个源程序必须有且只能有一个END语句,一般放在源程序的最后一行。
ASSUME 段分配伪指令
格式: ASSUME 段寄存器:段名 [,段寄存器:段名,…]
功能:用于说明源程序中定义的段或组由哪个寄存器去寻址,即建立寄存器与段间的对应关系。
源程序中的“程序”
标号:代表某一存储单元地址的名字
字母:AZ,数字:09,特殊字符:?. @_ $
注意:数字不能作名称的第一个字符。圆点只能用作第一个字符,标号最长为31个字符。
汇编语言源程序的结构
一般来说,一个完整的汇编源程序应由三个程序段组成,即代码段、数据段和堆栈段,每个段都以SEGMENT开始,以ENDS结束,代码段包含程序要执行的指令;堆栈段用来在内存中建立一个堆栈区;数据段用来在内存中建立一个适当容量的工作区,以存放程序中所需的数据。
例题
计算2^3^
1 | ; 定义数据段,用于存放结果 |
语法错误和逻辑错误
语法错误:程序在编译时被编译器发现的错误
逻辑错误:源程序编译后运行时发生的错误
对目标文件进行连接
连接的作用:
- 当源程序较大时,编译器会将源程序文件分成多个部分来编译,每个源程序编译成为目标文件后,再用连接程序将它们连接在一起,生成一个可执行文件。
- 程序中调用了某个库文件中的内容时,需要将这个库文件和该程序生成的目标文件连接在一起。
- 一个源程序编译后,得到了存有机器码的目标文件,目标文件中有的内容不能直接生成可执行文件,必须通过连接程序将这些内容处理为最终可执行的信息。