【发布时间】:2012-02-21 21:08:45
【问题描述】:
我想将我的引导加载程序复制到其自身硬盘的第一个扇区 (512)(我应该使用 bios 中断 13h),我找到了以下代码:
mov bx, buffer1 ; set BX to the address (not the value) of BlahBlah
mov ah,03h ;When ah=, int13 reads a disk sector
mov al,5 ;Al is how many sectors to read
mov cl,0 ;Sector Id
mov dh,0 ;Head
mov dl,80h ;Drive (0 is floppy)
mov cx,512 ;One sector /2
mov ah, 0x3 ; set function 2h
int 0x13
但它不起作用!
【问题讨论】:
-
复制意大利面代码从来都不是一个好方法。您应该学习一些汇编程序并尝试理解为什么您的代码不起作用。然后你可以尝试自己解决它,如果你遇到困难来这里。
-
你有没有注意到评论说 function 2h ?但它实际上将 0x3 移动到 ah
-
我知道代码在做什么!我实际上改变了它(3h是一个例子)!我不知道为什么它不起作用!
-
您是否使用缓冲区地址的适当段部分加载段寄存器?您是否检查了 BIOS 参考资料(例如 Ralf Brown 的中断列表),您是否正确使用了此 BIOS 功能(将其他寄存器设置为正确的值)?
-
先学习从工作磁盘读取,习惯bios调用,然后你就会知道该写的时候该做什么了。
标签: assembly bootloader bootstrapping bios