我是OS开发的新手,所以我写了一个引导加载程序,它工作正常,但是当我尝试使用int 13h加载内核时,它无法加载,并且我将软盘映像转换为iso格式,然后在虚拟框中运行所以我试图在DL寄存器中使用e0h,但是它给了我一个错误,因为没有找到致命错误的引导加载程序,所以我在做什么错了吗
开始:
[ORG 0X7C00]
xor ax,ax;使其为零 mov ds,ax cld;方向清晰
mov si,味精 呼叫打印 ;致电disk_read_error
挂起: cli 呼叫load_sector ; jmp hang
.data: msg db'Hello world !!!!',13,10,0 msg2 db“磁盘读取错误”,13,10,0 打印: 罗兹 或al,al; zero = str的结尾 做完了 mov ah,0x0E mov bh,0 整数0x10 jmp打印
完成: 退出
; dd if = boot.bin of = floopy.img seek = 0 count = 1 conv = notrunc
load_sector: MOV DL,e0h;驱动器0 =软盘1 MOV DH,0x0; head(0 = base) MOV CH,0x0;轨道/汽缸 MOV CL,0x02;扇区(1 = bootloader,扇区显然从1开始计数而不是0) MOV BX,0x1000;放置在内核的RAM中-我想在示例中随机选择 MOV ES,BX;将BX放在指针ES中 MOV BX,0x0;恢复为零-也与RAM位置有关
ReadFloppy:
MOV AH, 0x02
MOV AL, 0x01
INT 0x13
JC ReadFloppy ;if it went wrong, try again
;call print
;pointers to RAM position (0x1000)
MOV AX, 0x1000
MOV DS, AX
MOV ES, AX
MOV FS, AX
MOV GS, AX
MOV SS, AX
JMP 0x1000:0x0
;call print
;jnc disk_read_error
;call 0x00200
;hlt
disk_read_error: mov ah,0x0E mov bh,0 mov al,“ h” 整数0x10 mov si,味精2 呼叫打印 暂停 ;致电print2
次510-($-$$)db 0 分贝0x55 db 0xAA