首页 > 编程知识 正文

哈工大电路实验(哈工大模电实验挂科)

时间:2023-05-04 04:20:36 阅读:77195 作者:4315

哈工大操作系统实验1 -操作系统引导实验内容:

1 .改写1.bootsect.s主要完成以下功能: Bootsect.s可以在画面上打印提示信息“XXX is booting .”。 在这里,XXX是你给自己的操作系统取的名字,例如LZJos、Sunix等2 .改写setup.s主要完成以下功能。 2.1 bootsect.s setup.s在屏幕上输出“Now we are in SETUP”行。 2.2 setup.s可以获取至少一个基本硬件参数,如内存参数、图形参数、硬盘参数等。 将其存储在内存的特定地址中,并输出到画面上。 2.3不再加载setup.s Linux内核。 请将上述信息保持显示在画面上。 本实验主要是用于说明开机后计算机如何启动的过程。 (全部汇编代码) )。

从磁盘的第一个扇区读取bootsect.s,然后通过bios中断读取setup.s和system模块。 从setup.sBIOS读出基本系统参数(光标位置、内存大小等)进入保护模式。 设置IDT表和GDT表,调用main函数,进而进入c语言相关的系统代码。

实验注意: BIOS 0X10中断:显示字符串; BIOS 0X13中断:读取磁盘内容。

实验前请参考我的博客,实验0,进行linux内核文件的解压缩。

实验(1)修改bootsect.s,即显示自己定义的字符串:

进入CD//oslab/Linux-0.11/boot/RM-fbootsect.s #文件夹并删除bootsect.s,然后单击bootsect.svim bootsect.s中的新bootsect.s

entry _start_start: mov ah、#0x03 xor bh、bh int0x10 mov cx、#20 //中显示的字符长度mov bx、#0x0007 mov bp、#msg1 mov ax、#0x0007 //显示的字符. byte 13,10,13,10.org 510 boot _ flag :word0x aa55

更改后编译:

$ as86-0-a-obootsect.obootsect.s $ ld86-0-s-obootsectbootsect.o $ ddbs=1if=bootsect of=image skip=32 /

#当前工作路径为/home/Shiyan Lou/oslab/Linux-0.11/boot/#,将刚生成的Image放在Linux-0.11目录下的$ cp ./Image ./Image#

实验(2)修改setup.s

要更改setup.s的内容,请:

entry _start_start: mov ah、#0x03 xor bh、bh int0x10 mov cx、#29 //中显示的字符长度mov bx、#0x0007 mov bp、#msg2 mov ax、 cs mov es #0x 1301 int0x 10 z _ loop : jmpz _ loop msg 1:byte 13,10.ascii ' nowwweareinzzysetup ' /中显示的字符. byte 13,10

setup len=2setupseg=0x07e0entry _ start _ start : movah、#0x03 xor bh、bh int0x10 mov cx、#20 mov bx、#0x0007 mov bp、# 03 #0x 1301 int0x 10 load _ setup : movdx、#0x0000 mov cx、#0x0002 mov bx、#0x 0200 setuplenint0x 13 jncov #0x 000 #0x 0000 int0x 13 jmp load _ setupok _ load _ setup 3360 jmpi 0,setupsegmsg 1:byte 13,10.ascii ' zzysaazy.byte 13,10 编译执行:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。