博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习linux0.11内核代码——引导启动程序bootsect.s(3)
阅读量:2508 次
发布时间:2019-05-11

本文共 1366 字,大约阅读时间需要 4 分钟。

4) 屏幕显示“Loading system…”

! Print some inane message! 显示信息:“'Loading system ...' 回车”,共显示24个字符! 使用BIOS中断0x10功能号ah=0x03和ah=0x13实现! 请仔细阅读中断的使用! BIOS中断0x10功能号ah=0x03,功能:读光标位置! 输入:bh=页号! 返回:ch=扫描开始线;cl=扫描结束线;dh=行号; dl=列号! BIOS中断0x10功能号ah=0x13,功能:显示字符串! 输入:al=放置光标方式及规定属性。0x01表示使用bl中属性值,光标停在字符串结尾处;!      es:bp 指向要显示的字符串起始位置。 cx=显示字符串个数; bh=显示页面号!      bl=字符属性; dh=行号; dl=页号         mov  ah,#0x03             !读光标         xor    bh,bh                            ! xor代表异或,这条命令将bh置0         int     0x10                    !返回行号和列号,供串口显示         mov  cx,#24                           ! 显示24个字符         mov  bx,#0x0007                  ! bh=0,页=0;bl=7,字符属性=7         mov  bp,#msg1            ! es:bp寄存器指向要显示的字符串         mov  ax,#0x1301                   ! ah=0x13使用中断0x10功能号;al=0x01,使用bl中属性值         int     0x10                    !开中断,串口打印字符串

上面使用中断0x10显示字符,首先使用ah=0x03功能获取光标位置以及行号列号,作为ah=0x13中断的入参;而后使用ah=0x13中断将存在es:bp寄存器的字符串打印在串口屏幕,只要在使用中断时,将输入设定好即可。

5) 把磁盘setup模块后面的system模块加载到内存0x10000

SYSSEG = 0x1000…       mov  ax, #SYSSEG           mov  es,ax           ! es寄存器存放system段地址       call    read_it ! 调用read_it函数,读取磁盘上system模块,es为输入参数       …

read_it函数主要实现:

(1)判断es值是否位于64KB地址边界,否,则进入死循环;
(2)bx取异或操作,将bx置0,此时es:bx为0x1000:0x0000,即内存0x10000地址;
(3)通过前面获取的每磁道扇区数,判断读取的扇区个数(system模块所占),即确定需要加载的system模块的开始地址和结束地址;
(4)从system模块开始地址处读取数据到es:bx,期间不断判断是否读取到结尾处,如果是,则结束读取,否则继续读取。
这里写图片描述

你可能感兴趣的文章
满屏的指标?删了吧,手把手教你裸 K 交易!
查看>>
不吹不黑 | 聊聊为什么要用99%精度的数据回测
查看>>
高频交易的几种策略
查看>>
量化策略回测TRIXKDJ
查看>>
量化策略回测唐安奇通道
查看>>
CTA策略如何过滤部分震荡行情?
查看>>
量化策略回测DualThrust
查看>>
量化策略回测BoolC
查看>>
量化策略回测DCCV2
查看>>
mongodb查询优化
查看>>
五步git操作搞定Github中fork的项目与原作者同步
查看>>
git 删除远程分支
查看>>
删远端分支报错remote refs do not exist或git: refusing to delete the current branch解决方法
查看>>
python multiprocessing遇到Can’t pickle instancemethod问题
查看>>
APP真机测试及发布
查看>>
通知机制 (Notifications)
查看>>
10 Things You Need To Know About Cocoa Auto Layout
查看>>
一个异步网络请求的坑:关于NSURLConnection和NSRunLoopCommonModes
查看>>
iOS 如何放大按钮点击热区
查看>>
ios设备唯一标识获取策略
查看>>