操作系统实验——系统引导

操作系统实验之系统引导

知识引导:

在这里插入图片描述
在这里插入图片描述

实验目的:

  • 目的一:完成对liunx1.0的bootset.s的改写,使操作系统启动时能够再屏幕上打印出一行字。
  • 目的二:完成对liunx1.0的setup.s的改写,使操作系统启动时能够获取一个硬件参数,并显示到屏幕。

实验步骤:

  1. 修改bootset.s文件:

    entry _start
    _start:
    ! 首先读入光标位置
        mov ah,#0x03        
        xor bh,bh
        int 0x10
    ! 显示字符串 “Hello OS world, my name is ZXH”
    ! 要显示的字符串长度
        mov cx,#36              
        mov bx,#0x0007     
        mov bp,#msg1
        mov ax,#0x07c0
        mov es,ax
        mov ax,#0x1301   
        int 0x10
    !设置一个无限循环
    inf_loop:
        jmp inf_loop 
    !msg1 处放置字符串
    msg1:
    	!回车+换行
        .byte   13,10                     
        .ascii  "Hello OS world, my name is ZXH"
        !2对回车+换行
        .byte   13,10,13,10               
    .org 510
    boot_flag:
    ! 设置引导扇区标记 0xAA55
    ! 必须有它,才能引导
        .word   0xAA55      
    
  2. 编译运行

    • 使用下列命令编译和链接bootset.s

      $ as86 -0 -a -o bootsect.o bootsect.s
      $ ld86 -0 -s -o bootsect bootsect.o
      
    • 可以发现同级目录下多了一个bootsect 的文件大小是 544 字节,而引导程序必须要正好占用一个磁盘扇区,即 512 个字节。造成多了 32 个字节的原因是 ld86 产生的是 Minix 可执行文件格式,所以执行下列命令:

      $ dd bs=1 if=bootsect of=Image skip=32   
      
    • 我们将其生成的Image文件拷到linux1.1目录下,然后执行:

      ./run
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值