汇编语言:
- JC: Jump if carry, 如果进位标志是1,就跳转
- JNC:Jump if not carry,如果进位标志是0,就跳转
- JAE:Jump if above or equal,大于或等于时,就跳转
- JBE:Jump if below or equal,小于或等于时,就跳转
- JB: Jump if below,小于时,就跳转
- EQU:在程序开头时用,相当于#define宏定义
- RET:return,与C语言的return作用一样
软驱读盘顺序:
- 读18个扇区(sector)
- 切换另一面磁头继续读(header)
- 切换柱面,从第1个扇区开始读(cylinder)
段寄存器:
- 来源:设计BIOS的时代,CPU还没有32位内存,所以为了支持更大的内存,就做出段寄存器
- 作用:使用ES:BX来计算内存地址,ES * 16 + BX
- 注意:其实不管我们指定内存的什么地址,都必须指定段寄存器,这是规定。一般如果省略的话默认为“DS:”寄存器。因为有了这个规定,所以一般DS要预先指定为0
- 例子:MOV AL, [DS:SI] 可省略为 MOV AL, [SI]
使用EBX,最大支持内存扩展到4G
VRAM
- 显卡内存(Video RAM),可以和一般内存一样存储数据。不仅如此,它的各个地址对应着画面的像素。
操作系统的设计
- 架构的变化:把IPL和操作系统分成两个文件
- 32位模式:指的是CPU模式,与16位模式机器语言代码不一样。即使是同样的机器语言,解释的方法也不一样。所以两种模式的机器语言不能互相运行。32位模式下能使用CPU自我保护功能,但不能调用BIOS功能了,因为BIOS是用16位机器语言写的。所以想使用BIOS的事情,全部放在开头。
C语言
- main函数之前的函数声明:告诉编译器,有一个函数在别的文件里
C语言的局限
- 目标文件(机器语言文件)还要与其他文件链接后才能变成可执行的机器语言,这是C语言的一个缺陷。
C语言与汇编语言的混用
- 参照P62