Assembly 我是否必须不断更改扇区,或者是否可以加载多个扇区

Assembly 我是否必须不断更改扇区,或者是否可以加载多个扇区,assembly,x86,bootloader,Assembly,X86,Bootloader,因此,我最终找到了一个关于如何离开第一个扇区以便继续加载代码的示例 每次使用512字节时是否必须不断更改扇区 我可以一次加载多个扇区,也就是全部扇区吗?如果是这样的话,是否存在 限制一次可以加载多少个扇区 我打电话是为了加载下一个扇区 load_sector1: xor ah, ah int 0x13 clc mov bx, 0x07E0 mov es, bx xor bx, bx mov ah, 0x02 mov al, 0x1 mov ch, 0x0 mov cl, 0x2 ; Sect

因此,我最终找到了一个关于如何离开第一个扇区以便继续加载代码的示例

  • 每次使用512字节时是否必须不断更改扇区

  • 我可以一次加载多个扇区,也就是全部扇区吗?如果是这样的话,是否存在 限制一次可以加载多少个扇区
我打电话是为了加载下一个扇区

load_sector1:
xor ah, ah
int 0x13
clc
mov bx, 0x07E0
mov es, bx
xor bx, bx
mov ah, 0x02
mov al, 0x1
mov ch, 0x0
mov cl, 0x2 ; Sector
mov dh, 0x0
int 0x13
jmp 0x0:0x7E00

如果我可以加载多个扇区,我会重复我的代码但更改扇区号吗?还是我必须执行完全不同的操作?

请阅读“我可以一次加载多个扇区吗”您是否阅读了这些文档?还是您刚刚为
al
补足了该值?“每次使用512字节时,我是否必须不断更改扇区?”我甚至不知道这意味着什么。如果您一直从磁盘读取相同的扇区,您将继续获得相同的数据。如果需要不同的数据,请读取不同的扇区。既然你(显然)已经知道
cl
包含扇区号,我不明白你在问什么。@DavidWohlferd:我想他问的是,他是否需要一次读一个扇区,或者一次能读多个扇区。我认为,过去的一般经验法则是,你不应该读取超出圆柱体(轨道)边界的多个扇区,因为并非所有BIOSes都支持这些扇区。@MichaelPetch,这就是为什么我问他从哪里得到的
al
的his值?因为我看到的每一篇int 13参考文献都将
al
描述为“要读取的扇区数”,所以这个问题似乎可以自己回答。至于更合理的问题“我能读的最大扇区数是多少?”,事实上,您还必须提供气缸和缸盖,这意味着最大扇区数():63。“多轨”进入下一个C&H的能力出乎意料,但在我给他的链接中提到了这一点。“我是否必须不断改变扇区”的问题很奇怪。@DavidWohlferd:对于更通用的引导加载程序,您并不想读取跨越圆柱体边界的许多扇区。有您要开始读取的扇区,也有要读取的扇区数。现在您可能不会有问题,但如果您在旧硬件上运行,255是要读取的最大扇区数(它不限于您开始读取的扇区数)但可能不一定受支持,这取决于您启动的CHS以及BIOS的古老性。如果你开始reading@the轨道上的最后一个扇区,然后读取2个扇区对某些生物来说可能是一个问题。请阅读“我可以一次加载多个扇区吗”您是否阅读了这些文档?还是您刚刚为
al
补足了该值?“每次使用512字节时,我是否必须不断更改扇区?”我甚至不知道这意味着什么。如果您一直从磁盘读取相同的扇区,您将继续获得相同的数据。如果需要不同的数据,请读取不同的扇区。既然你(显然)已经知道
cl
包含扇区号,我不明白你在问什么。@DavidWohlferd:我想他问的是,他是否需要一次读一个扇区,或者一次能读多个扇区。我认为,过去的一般经验法则是,你不应该读取超出圆柱体(轨道)边界的多个扇区,因为并非所有BIOSes都支持这些扇区。@MichaelPetch,这就是为什么我问他从哪里得到的
al
的his值?因为我看到的每一篇int 13参考文献都将
al
描述为“要读取的扇区数”,所以这个问题似乎可以自己回答。至于更合理的问题“我能读的最大扇区数是多少?”,事实上,您还必须提供气缸和缸盖,这意味着最大扇区数():63。“多轨”进入下一个C&H的能力出乎意料,但在我给他的链接中提到了这一点。“我是否必须不断改变扇区”的问题很奇怪。@DavidWohlferd:对于更通用的引导加载程序,您并不想读取跨越圆柱体边界的许多扇区。有您要开始读取的扇区,也有要读取的扇区数。现在您可能不会有问题,但如果您在旧硬件上运行,255是要读取的最大扇区数(它不限于您开始读取的扇区数)但可能不一定受支持,这取决于您启动的CHS以及BIOS的古老性。如果你开始reading@the轨道上的最后一个扇区,然后读取2个扇区可能是一些BIOS的问题