现在的位置: 首页 > 综合 > 正文

《30天自制操作系统》第4天

2018年02月01日 ⁄ 综合 ⁄ 共 1871字 ⁄ 字号 评论关闭

1. C语言与画面显示的练习

汇编与C语言结合时能自由使用的寄存区只有EAXECXEDX3个,其他寄存区用于记忆非常重要的值,只能读不能写。

Intel系列CPU8086->80186->286->386->486

->Pentium->PentiumPro->Pentium2->Pentium3->Pentium4->.....

28616位,386以后是32位。

2. char i;是类似AL1字节变量,shorti;是类似AXint i ;是类似EAX4字节变量。

  Char *p;

  P = (char *)i;    //mov EAX,i  ;给寄存器赋值

  *p = i&0x0F;    //mov BYTE[ECX],i&oxff  ;给内存地址赋值

3. *p并是不什么变量,变量只有p,所谓*p,就相当于汇编中BYTE[p]这种语句的替换。

Char *p;声明的是p而不是*pChar *p不必看做指针,p不是指针,而是地址变量!!!他表示的是内存的地址。

4.  *p+i)等同于p[i];同样可写为i[p]; 都是BYTE[ ECX+i],  p[2]2[p]是一样的。

Char a[3]; //RESB 3

Char a[3]={1,2,3}; //DB 1,2,3

CPU的管脚与内存相连,可通过管脚读写数据。

!cons_nt.bat make clean,make run.

编写操作系统开始是对BIOS控制,取出存储在ROM里的程序。BIOS是用来执行POST(Power On Self Test,自检)的。自检是检查计算机的完整性(比如外设是否工作正常、键盘是否连接等)。这一切完成以后,你就会听到PC喇叭发出一声清脆的响声。如果一切正常,BIOS就会选择一个启动设备,并且读取该设备的第一扇区(即启动扇区),然后控制过程就会转移到指定位置。启动设备可能是一个软盘、光盘、硬盘,或者其它所选择的设备。在此我们把软盘作为启动设备。如果我们已经在软盘的启动扇区里写了一些代码,这时它就被执行。因此,我们的目的很明确,就是往软盘的启动扇区写一些程序。 

     Web服务器是什么?首先,他是一个服务器,给终端(客户端)提高服务。客户端想服务器发出请求,服务器返回相应的数据。Web服务器在某个端口监听服务,有请求就回应。

计算机所做的一切,看电影,听音乐, 上网,都是以科学计算为基础的。计算才是本质,指令才是本质,通讯才是本质,专门负责计算的电路集合ALU

5. CYLS EQU 10 ;定义常量

   我们先用BIOS设置启动的颜色模式等,然后我们需要保存设置值,放入内存某个区域

VMODE  EQU 0x0ff2

MOV BYTE[VMODE],8 ;8位彩色模式保存到内存0x0ff2处。而后我们就可以在此内存处读取颜色模式了(32位系统不好访问BIOS函数中断)。同样可以保存分辨率以及图像缓冲区的起始地址(0xa000)等。不能画面模式使用的显卡内存(VRAM)不一样。

至此启动区代码ipl10.nas不变了,开始OS编写,asmhead.nas, naskfunc.nas 汇编编写的函数,供C调用。Bootpack.c:调用汇编函数的包。

8086加电或复位后,处理器会执行一个硬件初始化,将代码段寄存器CS内容设为0xFFFF,其他所有寄存器都设为0,包括指令指针寄存器IP

808620根地址线0000-9FFFF用于访问DRAM内存,F0000-FFFFF(顶部64k)用于访问ROMROM里固化了开机时要执行的指令。开机第一条指令地址位于CSIP=0xFFFF0,正好位于ROM里,那里固化了开机时需要执行的指令。这个ROM就是BIOS-ROM,他执行开机自检,然后查找主引导扇区并主加载主引导扇区的512字节内容到内存地址0x7C00-0x7DFF

每个扇区以扇区头开始,然后是512个字节的数据区。扇区头包含了每个扇区自己的信息,主要有本扇区的磁道号、磁头号和扇区号,用来供硬盘定位机构使用。现代的硬盘还会在扇区头部包括一个指示扇区是否健康的标志,以及用来替换该扇区的扇区地址。用于替换扇区的,是一些保留和隐藏的磁道。 

6. 学习了单片机后对CPU的运作更容易理解,因为单片机就是一个简单的CPU

IN,OUT外部输入输出指令。

PUSHFD push flag double-world...

POPFD : POP  flag double-world...

2013-12-24


抱歉!评论已关闭.