boot文件 bootsect.s 第一篇随笔

参考 [github这个博主的][ https://github.com/sunym1993/flash-linux0.11-talk ]

bootsect.s

开机后会主动把由硬件设置好的主动把第一磁盘扇区212字节的内容读取到内存中

1、boot文件

bootsect.s

  1. 第一段指令代码,只是把开机从磁盘读取的这段bootsect.s代码复制到了另一片区域,还设置了栈顶

    mov	ax,#BOOTSEG		;BOOTSEG  = 0x07c0
    mov ds,ax
    mov ax,#INITSEG ;INITSEG = 0x9000
    mov es,ax
    mov cx,#256
    sub si,si
    sub di,di
    rep
    movw ;rep movw字 就是 es:si = ds:di 然后si+1 di+1;这样循环执行256(cx)次,每次移动一个字
    jmpi go,INITSEG ;INITSEG = 0x9000
    go:
    mov ax,cs
    mov ds,ax
    mov es,ax mov ss,ax
    mov sp,#0xFF00

  2. 继续从磁盘加载setup.s这段代码的内容到内存中

    load_setup:
    mov dx,#0x0000 ; 驱动器0,磁头0
    mov cx,#0x0002 ; 从扇区2开始读,轨道0
    mov bx,#0x0200 ; 地址=512,在INITSEG中
    mov ax,#0x0200+SETUPLEN ; 服务2,需要读的扇区数量 SETUPLEN = 4
    int 0x13 ; 阅读它
  3. 第三步就是把系统的内存读取到内存中,顺便在显屏上打印一下东西

    ok_load_setup:
    
    ; 获取磁盘驱动器参数,特别是扇区/磁道的数量
    ......
    ; 打印msg1处的内容
    mov ah,#0x03 ; 读取光标位置
    xor bh,bh
    int 0x10
    mov cx,#24
    mov bx,#0x0007 ; 第0页,属性7(正常)
    mov bp,#msg1
    mov ax,#0x1301 ; 写入字符串,移动光标
    int 0x10 ; 好的,我们现在已经写了消息
    ; 我们希望加载系统(0x10000)
    mov ax,#SYSSEG ; SYSSEG = 0x1000
    mov es,ax ; segment of 0x010000
    call read_it
    call kill_motor
    .......

  4. bootsect.s主要做了哪些事情了?需要和Makefile和build.c配合完成

最新文章

  1. 创建第一个 local network(I) - 每天5分钟玩转 OpenStack(80)
  2. Phalapi 中Union和Union All的用法
  3. AC日记——向量点积计算 openjudge 1.6 09
  4. windows下安装git & 在git@OSC上推送代码
  5. [转]java web简单权限管理设计
  6. static cross compile gtk-2.16.6+gtk-directfb+arm-linux (arm-linux-gcc-3.4.4+glib-2.3.5)
  7. lua 模块功能
  8. MIFARE系列2《非接触卡标准》
  9. linux make clean
  10. jni.h源码
  11. 如何用angularjs制作一个完整的表格之二__表格分页功能
  12. python文件处理
  13. 新注册第一帖----------------------乱码新手自学.net 之Linq 入门篇
  14. 《分布式Java应用之基础与实践》读书笔记四
  15. dedecms环境优化
  16. SpringBoot 数据篇之使用JDBC
  17. 使用Keras搭建cnn+rnn, BRNN,DRNN等模型
  18. Day 5-3 多态与多态性
  19. NOIP2017题解
  20. CF1139B Chocolates

热门文章

  1. Nginx基本配置与应用
  2. unity---判断物体碰撞的对象
  3. 2021.04.24【NOIP提高B组】模拟 总结
  4. 开发工具-Unix时间戳转换
  5. ExtJS 布局-Card 布局(Card layout)
  6. 实现领域驱动设计 - 使用ABP框架 - 通用准则
  7. jQuery做轮播图
  8. SAP Web Dynpro-门户集成
  9. 基于bat脚本的前端发布流程的优化
  10. CentOS yum命令404