本文总结自:王爽的《汇编语言》
- 8086机器启动过程
- 寄存器
- 内存
- 端口
- 中断
- 汇编子程序
一、机器启动过程
参看“《从机器启动到内核初始化》”
二、寄存器
- 通用寄存器:AX、BX、CX、DX、SI、DI、SP、BP
- 段寄存器:DS、CS、SS、ES
- 指令指针:IP
- 标志寄存器:flag
三、内存访问
- [...]:内存访问的符号
- 括号内放偏移地址
- 括号内的偏移地址可以是idata(常数)、BX、BP、SI、DI或他们的组合
- 其中BX不能和BP共存,SI不能和DI共存
- 可以存在的组合模式见下图
- 默认段前缀是DS,如果用了BP,则默认是SS,其他段前缀需要写明才能使用
- 数据长度
- 通过源或目的寄存器长度表明
- 没有寄存器标明长度,则用byte/word prt指明
- 都没有,则指令会默认操作数据长度,例如栈操作push/pop默认为字
- 内存寻址方式
四、端口
- 64K个端口(本质是IO控制器中的寄存器,统一编址或者独立编制)
- 端口读写指令:in和out
五、数据在哪里
- idata立即数
- 寄存器
- 内存
- 端口
六、汇编子程序
七、中断
8086汇编分为内中断和外中断(保护模式下分为软中断、异常和硬中断,实模式的内中断分为软中断和异常,外中断就是硬中断),外中断又分为可屏蔽中断INTR和不可屏蔽中断NMI。
不管是内中断还是外中断,中断处理的过程又分成硬件自动完成的中断过程和处理中断请求的中断例程。
- 中断过程:
- 中断例程:
- 外中断
- 中断响应过程