0401 用汇编语言写的源程序
用汇编语言编写程序的工作过程

汇编程序的构成:包含汇编指令和伪指令的文本

伪指令
伪指令:没有对应的机器码的指令,最终不被CPU所执行。
谁来执行伪指令呢?——伪指令是由编译器来执行的指令,编译器根据伪指令来进行相关的编译工作
汇编指令
汇编指令,对应有机器码的指令,可以被编译为机器指令,最终被CPU执行
程序返回(套路,是固定的两行汇编指令)
1 | mov ax,4c00h |
程序返回(套路):程序结束运行后,将CPU的控制权交还给使它得以运行的程序(常为DOS系统),相当于C语言中的return 0
程序中的3种伪指令

段定义
一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间来使用。
一个有意义的汇编程序中至少要有一个段,这个段用来存放代码。
定义程序中的段:每个段都需要有段名
1 | 段名 segment ——段的开始 |
end (不是ends)
汇编程序的结束标记。若程序结尾处不加end,编译器在编译程序时,无法知道程序在何处结束。
assume(假设)
含义是假设某一段寄存器和程序中的某一个用 segment … ends 定义的段相关联
比如assume cs:codesg指CS寄存器与codesg关联,将定义的codesg当作程序的代码段使用。
笔者注:即表示将codesg这个代码段首行汇编代码地址放入CS寄存器
源程序经编译连接后变为机器码

汇编程序的结构
在Debug中直接写入指令编写的汇编程序
- 适用于功能简单、短小精悍的程序
- 只需要包含汇编指令即可

单独编写成源文件后再编译为可执行文件的程序
- 适用于编写大程序
- 需要包括汇编指令,还要有指导编译器工作的伪指令
- 源程序由一些段构成,这些段存放代码、数据,或将某个段当作栈空间。

汇编语言的注释
; ——注释
如何写出一个程序来——思路是重点
例:编程求 2^3
思路:
①定义一个段

②实现处理任务

③指出程序在何结束

④段与段寄存器关联

⑤加上程序返回的代码

程序中可能的错误
语法错误
程序在编译时被编译器发现的错误;
容易发现下面程序中错误
1 | aume cs:abc ;此处assume写错 |
逻辑错误
程序在编译时不能表现出来的、在运行时发生的错误;
不容易发现下面程序中的错误
1 | assume cs:abc |