linux as86,操作系统学习笔记与总结(一)

总结下学习的内容,梳理下思路。

学习内容:启动, dd命令,bochs基本用法,as86,ld86

实验:使用bochs模拟开机启动过程,熟悉常用命令。

总结:

1.机器启动到加载bootsect:

a,开机进入实模式,实模式主要特点软件可以直接访问硬件和只有20位的寻址空间

b, 计算机刚刚加电时cs=f000,ip=fff0,机器执行ffff0处的BIOS的第一条指令

c,BIOS检查计算机的硬件,加载中断向量表和中断服务程序

d,执行int 0x19中断在读取软盘第一个扇区的512个字节,复制到内存的0x07c00处

2.dd命令:这里主要用于讲boot写入引导扇区

主要应用的参数:if=输入 of=输出 bs(ibs obs)=一次读写的字节数,也是指定的一个块的大小

count=blocks 拷贝blocks的个数,块大小等于ibs指定的字节数。

skip=blocks 从输入文件开头跳过blocks个块,在复制

实验使用的命令 dd bs=32 if=boot of=a.img skip=1(备份什么的以后用的在学)

3.bochs基本用法 :

a,必备的资源:bochs执行文件,bios映像文件(BIOS-bochs-latest),vga bios映像文件(VGABIOS-lgpl-latest),引导磁盘的映像文件(a.img),配置文件

b,配置文件:主要用来寻找磁盘映像,配置模拟机器的一些信息。megs模拟内存容量,romp_w_picpath,vgaromp_w_picpath,floppya(1_44=a.img static=inserted(已插入。ejected未插入) ) log(日志信息)boot(启动的驱动器 =floppy)

c,启动 bochs -f bochsrc (指定配置文件)

d,用到的指令 c运行,r查看寄存器内容,b addr 设置断点

4.as86汇编

a,使用了inter语法,Linux中用来创建16位的启动引导扇区程序和初始设置程序

b,学习语法使用的程序.global begtext

.text

begtext

.text

BOOTSECT=0X07C0

entry start                ;ld86链接后执行的第一条指令start:

jmpi    go,    BOOTSECT       ;执行后 cs=BOOTSECT

go:

mov    ax,    cs

mov    ds,    ax

mov    es,    ax

mov    [msgl+17],ah

mov    cx    #20

mov    dx,    #0x1004

mov    bx,    #0x000c

mov    bp,    #msgl

mov    ax,    #0x1301

int    0x10

loopl:     jmp    loopl

msgl:    .ascii    "Loading System..."

.byte    13,10

.org    510

.word    0xAA55          ;引导扇区结尾必须为[510]=55,[511]=AA

c,as86 -0 -a -o boot.o boot.s         ld86 -0 -s -o  boot boot.o(生成的boot为MINIX格式有544b需要除去minix文件头的32b)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值