QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2322|回复: 2

关于内存和bios的菜问题

[复制链接]
发表于 2003-10-1 10:53:41 | 显示全部楼层 |阅读模式
各位高手:
书上说,机器开机后,cpu处于实地址模式,代码段寄存器的内容为0xffff,所以,采用i386cpu的系统在这个位置上必须有不挥发存储器。

问题1:到底是0xffff还是0xffff0

问题2:"采用i386cpu的系统在这个位置上必须有不挥发存储器"这句话怎  
            么理解?

问题3:哪位高手能告诉我,自机器开机后bios和物理内存是怎样配合工作
            的?
发表于 2003-10-1 22:45:01 | 显示全部楼层
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!!!
回复

使用道具 举报

 楼主| 发表于 2003-10-2 00:53:56 | 显示全部楼层
首先谢谢Skykufo的回复,下面是我看书后的理解,请大家批评指出。
本人对汇编还是很生疏的。
      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的软件。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 07:05 , Processed in 0.069333 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表