汇编 写像素中断_自己动手写操作系统 8086sos
这是一个非常简单的demo性质的操作系统,可以称之为操作系统是因为已经实现了多任务以及任务切换:这可以说是操作系统最核心的功能。8086sos的实现仅仅使用了300行汇编代码,运行在MBR中:这是BIOS读取并执行的第一个程序。虽然简单,然而却足够让人了解很多基本概念,包括汇编、寄存器、寻址、BIOS、中断、多任务,任务切换。你可以使用bochs模拟器进行测试,这是一个强大的开源x86模拟器,模拟
这是一个非常简单的demo性质的操作系统,可以称之为操作系统是因为已经实现了多任务以及任务切换:这可以说是操作系统最核心的功能。
8086sos的实现仅仅使用了300行汇编代码,运行在MBR中:这是BIOS读取并执行的第一个程序。虽然简单,然而却足够让人了解很多基本概念,包括汇编、寄存器、寻址、BIOS、中断、多任务,任务切换。
你可以使用bochs模拟器进行测试,这是一个强大的开源x86模拟器,模拟了包括x86处理器、BIOS、存储器和各类硬件外设,还可以进行单步调试。
8086sos运行起来之后,会进行两个任务taskA和taskB的切换,通过键盘中断来进行任务的切换,为什么不实用时钟中断?因为...我没有调通8086模式下的时钟中断(捂脸...),BIOS中断相关的资料实在太少。由于这只是一个简单的demo,而且键盘中断可以达到同样的演示效果,并不影响对系统本质的理解。在实验中按下任意一个按键即可触发键盘中断,中断函数中会执行任务切换的操作。
关于汇编的学习教程,推荐王爽的《汇编语言》。8086作为X86处理器系列的鼻祖,当前全世界运行在所有PC和服务器上的X64,我们依然可以看到8086的影子,其寄存器、寻址方式和8086仍然有着一定的一致性。理解8086对于后续的X86的学习仍然具有相当大的帮助。虽然目前已经几乎没有人会自己写汇编语言了,然而汇编作为计算机体系的最底层,理解汇编,对硬件掌握一定程度的了解,我认为是程序员的基本修养。王爽老师的《汇编语言》思路清晰,内容全面,知识点丰富,推荐大家选择适当的章节进行深入的阅读。
8086一般为DIP40的封装,可以看到有20位的地址总线A0-A19,以及16位的数据总线D0-D15,其中地址总线和数据总线复用在相同的引脚上面。由于内部的寄存器均为16bit,然而20位的地址总线可寻址1M的内存空间,所以8086使用了两个寄存器组合来进行内存的寻址,物理内存 = 段寄存器 << 4 | 偏移寄存器。
讲到这里,青山想起来刚接触8086寄存器的时候,对intel佩服的五体投地,intel设计的可真好啊:
AX:累加寄存器;BX:基址寄存器;CX:计数寄存器;DX:数据寄存器;
CS:代码段寄存器;DS:数据段寄存器
intel怎么可以将字母顺序和寄存器含义编排的这么好,仿佛是浑然天成的设计!在没接触其他类型处理器的很长的一段时间里,我曾经以为所有的寄存器必须以ABCD... 为前缀来命令(捂脸...)。
时至今日,你依然可以在某购物网站买到8086芯片:
- 所有资料,包括源码、模拟器、运行脚本:
如何运行8086sos
- 安装bochs-2.4.5.exe,一路单击下一步即可完成安装
- 双击脚本bochsrc.bxrc,即可运行8086sos
如何编译8086sos
需要在linux下进行编译
- 安装汇编编译器nasm $sudo apt-get install nasm
- 在8086sos目录下执行$make 即可编译出镜像kernel.img
视频教程
自己动手写操作系统之8086soswww.bilibili.com更多推荐
所有评论(0)