第一个程序
一个汇编语言程序从写出到最终执行的简要过程如下:
- 编写汇编源程序,这一步的工作结果是产生一个存储源程序的文本文件
- 对源程序进行编译连接,产生一个可在操作系统中运行的可执行文件
- 执行可执行文件中的程序
可执行文件包含两部分内容:
- 程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的数据)
- 相关的描述信息(比如,程序有多大、要占用多少内存空间等)
在汇编语言源程序中,包含两种指令,一种是汇编指令,一种是伪指令
汇编指令是有对应的机器码的指令,可以被编译为机器指令,最终为CPU所执行
伪指令没有对应的机器指令,最终不被CPU所执行,伪指令是由编译器来执行的指令,编译器根据伪指令来进行相关的编译工作
一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或者当作栈空间来使用,一个有意义的汇编程序至少要有一个段,这个段用来存放代码
段结束、程序结束和程序返回之间的区别
目的 | 相关指令 | 指令性质 | 指令执行者 |
---|---|---|---|
通知编译器一个段结束 | 段名 ends | 伪指令 | 编译时,由编译器执行 |
通知编译器程序结束 | end | 伪指令 | 编译时,由编译器执行 |
程序返回 | mov ax,4c00H int 21H | 汇编指令 | 执行时,由CPU执行 |
一般来说,程序在编译时被编译器发现的错误是语法错误,在源程序编译后,在运行时发生的错误是逻辑错误。语法错误容易发现,也容易解决,而逻辑错误通常不容易被发现
汇编程序从写出到执行的过程
编程 -> 编译 -> 连接 -> 加载 -> 运行
任务:编写程序运算232^323,并跟踪程序的执行过程
assume cs:abc
abc segment
mov ax,2
add ax,ax
add ax,ax
mov ax,4c00H
int 21H
abc ends
end