文章目录
基础不会,啥都白费;基础不牢,地动山摇。
汇编在基础中的地位举足轻重,学习汇编,可以帮助我们从CPU角度出发,理解程序,写出更好的 高级语言 程序。可以帮助我们理解程序的运行机制,知道原理,解决一些隐蔽的BUG。
学习步骤: 看视频,看书,做笔记,理解为主。习题独立完成,全对,才能进入下一章的学习。
视频: 小甲鱼
教材: 《汇编语言(王爽)》(三版)
日期: 2020-07-01
进度:31/77
四、第一个程序:22/77
- 编写源程序文件
- 编译链接可执行文件
- 执行可执行文件中的程序
可执行文件:
- 程序(汇编指令翻译成的机器码) + 数据(源程序中定义的数据)
- 描述信息(如,程序有多大、要占用多少内存空间)
1. 源程序结构
源程序: 源程序文件中的所有程序,皆称为源程序
程序: 源程序中最终 由计算机执行,处理的指令或数据。
汇编源程序由伪指令 和汇编指令 构成
汇编指令: 用来翻译成机器码
伪指令: 给编译器执行的,让编译器执行相关编译工作。
;
在汇编中表示注释
段名 segment
和段名 ends
是一对,定义一个段,这个段用来存放代码。(ends
后面的s
表示的是segment而不是复数的意思)
标号:
XXX segment
里的XXX就是标号。它是一个段的名称 ,最终会被编译,连接成为一个段的段地址(就类似C中的指针)
end
用来标识程序的结束assume
假设寄存器和程序中的某一个XXX segment ... XXX ends
段相关联,很像给寄存器取别名
注意: 至少要有一个段(代码段)
下图展示了汇编指令 到可执行文件 的过程
2. 程序返回
DOS是一个单任务系统:
- 一个程序p2想要运行,必须得有一个正在运行的p1,把它从可执行文件加载入内存,并将CPU的控制权交给p2,p2才能运行。
- p2运行时,p1暂停运行。p2运行完毕,p1继续运行。
比如仿DOS程序CMD,执行p2.exe时,CMD.exe停止执行。等到p2.exe执行完毕后,CMD.exe再次执行。
一个程序结束,然后返回调用的程序的行为,叫做程序的返回 ret
要让程序返回,需要以下两行代码
int 21H
是中断的意思,中断机制是DOS的发明。在Win中,变成了消息机制,从而单任务系统变为多任务系统。
注意: 上面两行代码是固定的,原理后面再讲。
3. 程序错误
程序错误分为:语法错误 和逻辑错误
- 语法错误: 编译器报错
- 逻辑错误: 运行报错
很类似
JAVA
中的运行期异常 和编译期异常 。但是 错误 和 异常 一定要区分开来。错误是不可避免的,异常是可以避免的。所以,语法错误叫成 语法异常 更准确。逻辑错误,可能是由于代码不规范,那就应该列为 逻辑异常