zoukankan      html  css  js  c++  java
  • 操作系统学习笔记 005 引导扇区

    引导扇区

    BIOS运行完后,加载启动盘(BIOS里设置的)的MBR(主引导区)

    512字节,以0xaa55作为结束标志,否则就认为是不可引导的

    这段代码会加载到内存的07c00h位置,然后从这里开始执行

    汇编代码

    boot.asm

         org  07c00h             ; 告诉编译器程序加载到7c00处

         mov  ax, cs

         mov  ds, ax

         mov  es, ax

         call DispStr            ; 调用显示字符串例程

         jmp  $                  ; 无限循环

    DispStr:

         mov  ax, BootMessage

         mov  bp, ax             ; ES:BP = 串地址

         mov  cx, 16             ; CX = 串长度

         mov  ax, 01301h         ; AH = 13,  AL = 01h

         mov  bx, 000ch          ; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)

         mov  dl, 0

         int  10h                ; 10h 号中断

         ret

    BootMessage:       db   "Hello, OS world!"

    times    510-($-$$)    db   0    ; 填充剩下的空间,使生成的二进制代码恰好为512字节

    dw   0xaa55                      ; 结束标志

    编译运行

    # nasm boot.asm -o boot.bin

    # bximage                   ;按照提示生成一个1.44M的软盘镜像文件a.img

    # dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc

    # dd --help                 ;查看dd命令的帮助

    把fdos-10meg/bochsrc.txt复制过来,删除其中ata的配置,添加:

    floppya: 1_44=a.img, status=inserted

    boot=floppy

    # bochs

    启动的虚拟机屏幕左上角有一个红色的Hello, OS world!

    汇编基础

    MOV指令

    源目标

    通用寄存器

    段寄存器

    控制寄存器

    调试寄存器

    内存

    立即数

    Y

    -

    -

    -

    Y

    通用寄存器

    Y

    Y

    Y

    Y

    Y

    段寄存器

    Y

    -

    -

    -

    Y

    控制寄存器

    Y

    -

    -

    -

    -

    调试寄存器

    Y

    -

    -

    -

    -

    内存

    Y

    Y

    -

    -

    -

    $           所在源代码行的地址

    $$          当前段开始出的地址

    $-$$        当前行所在当前段内的偏移

    call        修改IP或同时修改CS+IP,相当于

    push CS

    push IP

    jmp far/near ptr 标号

    ret         用栈中的数据修改IP,实现近转移,相当于

    pop IP

    retf        用栈中的数据修改CS+IP,实现远转移,相当于

    pop IP

    pop CS

    关于10h号中断,这个帖子写得很好:

    http://blog.csdn.net/hua19880705/article/details/8125706

  • 相关阅读:
    C# 从服务器下载文件
    不能使用联机NuGet 程序包
    NPOI之Excel——合并单元格、设置样式、输入公式
    jquery hover事件中 fadeIn和fadeOut 效果不能及时停止
    UVA 10519 !! Really Strange !!
    UVA 10359 Tiling
    UVA 10940 Throwing cards away II
    UVA 10079 Pizze Cutting
    UVA 763 Fibinary Numbers
    UVA 10229 Modular Fibonacci
  • 原文地址:https://www.cnblogs.com/zhuyingchun/p/4924291.html
Copyright © 2011-2022 走看看