chap8本章习题答案
- retf和ret的区别就在于,ret是相对近转移,retf是远转移。ret只弹出指针寄存器IP而retf还要接着弹出段寄存器CS。知道了原理,就可以改写retf了。
;源程序
begin:
push word [es:code_1_segment]
mov ax,continue
push ax ;可以直接push continue,80386+
retf ;转移到代码段1接着执行
;修改之后的程序
begin:
push word [es:code_1_segment]
mov ax,continue
push ax ;可以直接push continue,80386+
ret ;转移到代码段1接着执行
pop cs
这里本来写的是pop ip,但是编译失败了。可能ip寄存器不能认为操作(为了安全考虑?)
实测可以运行
2.本来这两句话是用来处理实际长度小于等于512个字节的情况的。删除后对于长度小于等于512个字节的扇区,会附加一个空白扇区。
chap9 中断和动态时钟显示
终于到了喜欢的硬件部分了吗!
外部硬件中断
什么是中断?
当处理器遇到了不得不处理的事情(例如:电池低电量;硬盘读取位置数据损坏等)就必须放下手头的工作,先把这个问题解决掉。这就是简单版“中断”
每种类型的中断都被编号(中断向量号)
从硬件角度而言,外部硬件中断通过两个信号线引入处理器内部:NMI和INTR
NMI:非屏蔽中断
非屏蔽中断包括内存校验错,IO校验错。这种错误必须无条件加以处理,由于其特殊性,统一中断号为2.一般此类错误属于严重错误。
INTR:可屏蔽中断
这类中断的特点有二:1.数量多 2.可被屏蔽
由于处理器只有一个INTR引脚,需要一个代理来判断中断的优先程度传送给处理器。在单处理器系统中,用的最多的是8259芯片,也称:中断控制器或者可编程中断控制器。
intel允许256个中断,8259负责提供其中的15个,但是中断号是不固定的。
8259芯片结构如下
注意:优先级是主片IR0>IR1>IR2以此类推。从图中可以直观地看出为什么接受15个而不是16个中断号
屏蔽方式:当处理器IF标志位为0时,所有可屏蔽中断都会被忽略,反之接受
可以通过**cli(clear interrupt flag)和sti(set interrupt flag)**来控制IF寄存器
实模式下的中断向量表
中断向量表(interrupt vecior table,IVT),也就是在程序碰到中断时,处理器会做的事。一共256个中断,被集中存放到物理地址0x00000~0x003ff处。这就是中断向量表。IVT中每个中断占两个字(4字节)
处理器从8259芯片获取中断号,接着会执行以下内容:
- 保护现场:压栈FLAGS,CS,IP寄存器。清除IF和TF位
- 执行中断处理程序:拿到中断号之后,由于中断号*4=该中断在中断向量表中的偏移(4字节的原因),之后从中获取中断程序的偏移地址和段地址,开始跳转到中断处
- 返回到原始程序:执行iret(每个中断程序的最后一条指令),恢复IP,CS和FLAGS的内容,跳转到主程序接着执行
中断向量表初始化由BIOS完成,BIOS会将每一个中断指向一个位置IRET.之后的修改需要交给操作系统
实时时钟
计算机中集成了RTC(real time clock)电路。他依靠全天工作的石英振荡器来确定标准时间
日期和时间信息保存在CMOS RAM中。其中包含时间信息以及对时间信息操作的寄存器。由于这一部分比较繁琐,不再列出。
初始化
这里我们要做的是:安装中断向量。
我们应该先找到中断向量的物理位置。这里是9.2让我们寻找的。凭借常识可以得到答案是段地址:0x00,偏移地址:0x110(4*70),因为每个中断占据两个字,后续用bochsdbg可以验证
这里主要工作是设置RTC的ABCD寄存器。主要工作:设置RTC工作状态,使其产生中断信号发送给中断控制器
之后转到显存位置,屏幕上显示一个字符@
之后在这里进行了时钟中断的具体发出中断-接收中断的循环过程。不在这里详细解释了。因为感觉了解始终具体是如何工作的细节对于理解os意义不大。
内部中断
内部中断发生在处理器内部。比如:
0号中断:除数为0或者结果溢出
6号中断:非法指令
软中断
此类中断不需要识别总线周期,由int指令给出
int3 ;设置断点指令
int 0x80 ;引发0x80号中断
into ;如果标志寄存器OF位为1,引发4号中断
BIOS中断
属于一种特殊的软中断。在进入主引导扇区之前,BIOS中就已经被建立起来了。功能是:为了方便的使用最基本的硬件访问功能。例如访问键盘服务:
int 0x16
mov ah,0x00 ;从键盘读字符
int 0x16 ;键盘服务,字符将保存到AL中
感觉还是有点难…这里勉强能把程序看明白,自己写估计要费老大劲。
所以作业就没有做
那么,欢迎来到下一章,保护模式的世界