关于内存和bios的菜问题
各位高手:书上说,机器开机后,cpu处于实地址模式,代码段寄存器的内容为0xffff,所以,采用i386cpu的系统在这个位置上必须有不挥发存储器。
问题1:到底是0xffff还是0xffff0
问题2:"采用i386cpu的系统在这个位置上必须有不挥发存储器"这句话怎
么理解?
问题3:哪位高手能告诉我,自机器开机后bios和物理内存是怎样配合工作
的? 1。cs=0xffff ip=0000加起来就是0xffff0这里就是cpu执行的第一条指令的地址,一般是
jmp 到bios某处。
2。不挥发存储器指的就是rom吧,闪存之类的也行,只要掉电不会没内容,一般就是rom
3。最初的1k内存(中断向量表)bios把它提供的软中断地址放在恰当的位置,640k
下的是应用程序呆的地方,比如bios启动硬盘的mbr时会mbr整个放到ox7c00这个地方,
以后这个地方放什么东西由操作系统决定。640k-1m是系统内存区,你找本汇编书看看
怎样分布吧。
另外,freebios是个什么开源项目?写个开源的bios?那位大虾介绍一下,thx!!! 首先谢谢Skykufo的回复,下面是我看书后的理解,请大家批评指出。
本人对汇编还是很生疏的。 :oops:
I386 PC开机后,CPU处于实地址模式(实地址模式下CPU只能存取20位地址),并置代码段寄存器CS的内容为0xffff0,取指令指针寄存器IP的内容为0,也就是说从线性地址0xfffff处开始取第一条指令。目前的ROM BIOS都有在启动时自动将自己以镜像形式复制到RAM中的功能,而其复制到的地址也正好是0xffff0,所以,很自然的CPU在PC机启动后读取的第一条指令就来自于ROM BIOS。
那这第一条指令究竟是条什么指令呢?
ROM BIOS在0xffff0处的第一条指令为:“FFFF0:JMP START”,这是一条汇编指令,意思是说CPU要执行的下一条指令在“START”所指的地址处。如前所述,在实模式下的CPU只能存取1M的地址空间,而0xffff0已是顶端,所以只能跳到别处去(只能向低地址方向跳)。而“START”所指的这个地址是随BIOS厂商或BIOS版本的不同而不同的。
一般情况下,从0xf0000到0xffff0的这64k的内存区域就是ROM BIOS的镜像区域,即“START”的值为“0xf0000”。紧接着,BIOS自检开始(BIOS的自检过程是严格按序的,详见图1)在自检过程中的一些需显示的信息(即PC机开机信息)通过显卡显示在屏幕上,地址A0000到BFFFF为显示缓冲区。
一旦BIOS完成自检和初始化工作后,BIOS便通过软中断INT19H引导系统。如果你的操作系统在软盘上,则INT19H读引导扇区到内存0x07C00处;如果操作系统在硬盘上,则也读引导扇区到内存0x07C00处;如果两者都没有引导扇区,则INT19H调用INT18H到ROM BASIC或显示无操作系统,BIOS进入死循环。
注:ROM是一种硬件,BIOS是指ROM中存储的程序(软件),ROM BIOS是指ROM中存储的BIOS程序。而CMOS是指调用BIOS的软件。
页:
[1]