怎样写一个简单的操作系统(4)

时间:2026-01-15

怎样写一个简单的操作系统

这种表示方法非常令人难以记忆(译注:简直是发狂的)。汇编语言使用一些助记符,如mov ax, 30来代替这些指令。汇编指令直接与机器码CPU指令相关联,我们就不用再关心那些看起来毫无意义的二进制数字。

跟大多数的编程语言一样,汇编语言也是有序的指令流。你可以在不同的指令位置进行跳转,也可以设置子程序或者函数,但是它比C#之类的程序要小得多。使用汇编,你无法给出一个打印“Hello World”到屏幕的指令,因为CPU根本没有屏幕这样一个概念!相反,你可以直接操作内存,控制RAM(译注:随机存取存储器),在它们上面进行算术运算并把结果放到正确的位置。听起来很疯狂么?但是汇编并不是很难掌握,虽然在一开始你会觉得有点陌生和不可理解。

在汇编语言层次,并没有高级语言中类似变量这样的一些抽象的概念。你所能做的就是设置Registers(译注:寄存器)的值,Registers是内置在CPU中的高速存储设备。你可以把数据存放在Registers上面并且执行计算。在16位模式下,这些寄存器只可以存储0到65535之间的数字。下面是一个典型的X86 CPU的基本寄存器列表:

EDX等等)

因此你可以像使用变量一样用这些寄存器来存储数据,只不过它们在数据大小和用途上比较固定。有一类比较特殊的寄存器,叫做段寄存器,这主要是因为旧的计算机系统的限制,内存的处理被限制在一个64K的叫做段的块上。这是一个非常麻烦而混乱的问题,不过幸运的是,你现在不用担心,因为目前你即将编写操作系统远远小于一千字节,在Mike OS里面,我们把程序局限在一个64K的段里面,这样我们就不必去招惹麻烦的段寄存器了。

堆栈是从主存储器上面专门开辟的一块区域,用来存储临时信息。之所以叫着栈是因为一个数字堆积在另一个数字是上面,很形象的一种称呼。你可以想象一下,如果你有一个品客(译注:国际著名薯片品牌)的包装筒,如果你往里面顺序放入一张扑克牌,一个iPod Shuffle和一个啤酒杯垫子,那么你再把它们拿出来的时候就是完全相反的顺序了(先是啤酒杯垫子,然后是ipod shuffle,最后是扑克牌)。这跟数字也是一样的,如果你把数字5,7和15顺序压入堆栈,那么你弹出这些数字的时候顺序就刚好相反了,先是数字15,然后是数字7,最后是15。在汇编里面,你可以把寄存器的值压到堆栈上,处理完某些事情后在

怎样写一个简单的操作系统(4).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:4.9 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:19元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219