linux之 电脑上电到引导扇区之间流程
2018-02-02 09:30
239 查看
程序在上电之后,内存中什么都没有,Intel将所有CPU的硬件都设计为加电即进入16位实模式状态运行,同时将CPU的硬件逻辑设计为加电瞬间强行将CS的值置为0xf000,IP的值置为0xfff0,这样CS:IP就指向0xFFFF0这个地址,这个地址就是BIOS的入口地址
程序自动从这里开始执行,内存在刚上电时,里面是没有东西的,程序怎么能运行呢?这个地址究竟指向什么呢?
指向Rom
BIOS程序是被固化在计算机主板上的一块很小的ROM芯片里,是计算机出产的时候被设置好的,它主要的功能就是自检,随着程序运行,屏幕上会显示显卡的信息,内存的信息,还有一项很重要的操作:BIOS在内存中建立中断向量表和中断服务程序,利用中断服务程序,可以把系统内核的程序从软盘加载到内存
在中断表和中断服务程序建立好之后,硬件体系和BIOS联合操作,使CPU接收到一个0x19中断,这个中断服务程序的主要功能就是把软盘第一个扇区中的512B加载到内存0x07c00处。
这个第一扇区的真正内容在后面介绍,这里写一个测试程序,打印一串字符,当程序运行到加载第一扇区时,会把这个测试程序加载到内存中,继而会在显示器中显示
Hello, OS world!
运行脚本
程序自动从这里开始执行,内存在刚上电时,里面是没有东西的,程序怎么能运行呢?这个地址究竟指向什么呢?
指向Rom
BIOS程序是被固化在计算机主板上的一块很小的ROM芯片里,是计算机出产的时候被设置好的,它主要的功能就是自检,随着程序运行,屏幕上会显示显卡的信息,内存的信息,还有一项很重要的操作:BIOS在内存中建立中断向量表和中断服务程序,利用中断服务程序,可以把系统内核的程序从软盘加载到内存
在中断表和中断服务程序建立好之后,硬件体系和BIOS联合操作,使CPU接收到一个0x19中断,这个中断服务程序的主要功能就是把软盘第一个扇区中的512B加载到内存0x07c00处。
这个第一扇区的真正内容在后面介绍,这里写一个测试程序,打印一串字符,当程序运行到加载第一扇区时,会把这个测试程序加载到内存中,继而会在显示器中显示
Hello, OS world!
org 07c00h;将程序加载到0x7c00处 mov ax, cs;使ds和es指向与cs相同的段 mov ds, ax; mov es, ax; call DispStr;调用DispStr jmp $;死循环 DispStr: mov ax, BootMessage;将会把字符串的首地址传给bp mov bp, ax; es:bp 串地址 mov cx, 16; 串长度 mov ax, 01301h; ah = 13 al = 01 mov bx, 000ch; 页号为0 bh=0 黑底红字bl=0ch mov dl, 0; int 10h; 10h号中断 ret; 返回 BootMessage: db "Hello, OS world!"; times 510 - ($-$$) db 0; 填充剩下的空间为0 $-$$本行距离开始处的相对距离 dw 0xaa55; 加上 结束标志 刚好512字节
运行脚本
#!/bin/bash nasm boot.asm -o boot.img dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc bochs -f bochsrc
相关文章推荐
- linux的系统引导流程
- Linux开机流程分析与Grub引导程序
- Linux笔记 其二 系统引导流程
- Linux——系统引导流程学习简单笔记
- linux 之 引导扇区(三)
- Linux笔记 5 (系统引导流程)
- Linux(ubuntu)下30天自制os学习引导,第3.0天(读取u盘第二扇区到内存)
- linux引导流程解析
- linux引导流程解析
- Linux引导流程
- Linux 学习笔记_5_Linux引导流程解析_1
- linux 引导扇区
- Linux系统引导流程
- CentOS6.4之Linux引导流程解析
- linux之系统引导流程及模块加载卸载简述
- Linux引导流程解析(2)
- Linux引导流程(一)
- Linux引导流程解析
- linux的引导流程
- (五)Linux引导流程解析