本文主要是介绍linux-0.11调试教程,setup.s中的硬盘参数表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
setup.s获取显卡信息和硬盘信息,因为硬盘信息的地址在中断向量int0x41处既0x0000:0104处,所以bootsect.s中把Image中的system部分移到了0x10000开始的地方,(而不是直接移到0x0000处,防止覆盖掉硬盘参数表的地址和硬盘参数表,因为硬盘参数表的地址在0x9fc0:0x003d处!),setup.s里面的代码取得硬盘参数表后再把0x10000处的system向下移动到0x0000处。
内存地址4*0x41=0x104开始的4个字节表示硬盘参数表的段地址(后面2字节)和偏移地址(前面2字节),
lds si,[4*0x41]指令之前DS为0x0000,之后为0x9fc0!
相关代码:
! Get hd0 data
mov ax,#0x0000
mov ds,ax
lds si,[4*0x41]
mov ax,#INITSEG
mov es,ax
mov di,#0x0080
mov cx,#0x10
rep
movsb
这篇关于linux-0.11调试教程,setup.s中的硬盘参数表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!