为了账号安全,请及时绑定邮箱和手机立即绑定

引导加载程序不会跳转到内核代码

引导加载程序不会跳转到内核代码

引导加载程序不会跳转到内核代码我在写小操作系统-练习用。我从引导程序开始。我想要创建在16位真实模式下运行的小型命令系统(目前是这样)。我已经创建了重新设置驱动器的引导加载程序,然后在引导加载程序之后加载扇区。问题是因为jmp实际上什么都没发生。我不试图在0x7E00加载下一个扇区(我不完全确定如何使用es:bx来指向地址,所以这可能是一个问题,我相信它的地址:偏移),就在引导加载程序之后。这是代码:; ; SECTOR 0x0 ; ;dl is number of harddrive where is bootloader org 0x7C00 bits 16 ;reset hard drive xor ah,ah int 0x13 ;read sectors clc mov bx,0x7E00 mov es,bx xor bx,bx mov ah,0x02 ;function mov al,0x1  ;sectors to read mov ch,0x0  ;tracks mov cl,0x1  ;sector mov dh,0x0  ;head int 0x13 ;if not readed jmp to error jc error ;jump to 0x7E00 - executed only if loaded jmp 0x7E00 error:     mov si,MSGError     .loop:         lodsb         or al,al         jz .end         mov ah,0x0E         int 0x10         jmp .loop     .end:         hlt MSGError db "Error while booting", 0x0 times 0x1FE - ($ - $$) db 0x0 db 0x55 db 0xAA ; ; SECTOR 0x1 ; jmp printtest ;definitions MSGLoaded db "Execution successful", 0x0 ; ; Print function ; si - message to pring (NEED TO BE FINISHED WITH 0x0) printtest:     mov si,MSGLoaded     .loop:         lodsb         or al,al         jz .end         mov ah,0x0E         int 0x10         jmp .loop     .end:         hlt times 0x400 - ($-$$) db 0x0我一直在使用VirtualBox测试这段代码,但是实际上什么都没有发生,读取错误没有显示,以及应该打印的消息。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 553 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信