主世界 2020-12-12 11:25 采纳率: 50%
浏览 22
已采纳

自制操作系统的问题?

我跟着<30天自制操作系统>和<orange's...>写操作系统,没想到在软盘读取就遇到了问题.

boot.asm

org	0x7c00;程序装载地址

;FAT12软盘的记述
jmp	short	entry
nop
%include "dec_fat12.inc"

;入口
entry:
        ;初始化寄存器
	mov     ax,cs
	mov     ds,ax
	mov     es,ax

	mov     bp,BootMsg
	call      putstr

	cli
	call	findLoader
	mov	bp,FindLoaderMsg
	call	putstr
	sti
	jmp	0x0820

;进入显卡模式,现在就是黑屏而已
vga:
	mov     al,0x13
	mov     ah,0x00
	int     0x10
	ret

FindLoaderMsg:
	db	"Finding Loader..."
	db	0

;将软盘的34扇区载入内存(通过cm.img和loader.bin确认,0x4400处有loader.bin)
findLoader:
	mov	   ax,0x0820
	    mov	es,ax
	mov	ch,0
	mov	dh,0
	mov	cl,17

	mov	ah,0x02
	mov	al,1
	mov	bx,0
	mov	dl,0x00
	int	0x13
	jc	findLoader

	mov	bp,0x0820
	call	putstr_charmode
	ret

;以字符模式显示字符串(临时用来检查0x0820这个地址的值的)
putstr_charmode:
	mov     al,[bp]
	add	al,48
        add     bp,1
        mov     ah,0x0e
        mov     bx,15
        int     0x10
        cmp     al,48
        jne     putstr
        ret

;显示字符串(以0x00结尾)
putstr:
	mov     al,[bp]
        add     bp,1
        mov     ah,0x0e
        mov     bx,15
        int     0x10
        cmp     al,0
        jne     putstr
       	ret 
BootMsg:
	db	"CM OS"
	db	0x0a,0x0d
	db	0

times	510-($-$$)	db	0
;用0x0填满剩余的启动区空间
dw	0xaa55
;启动区标志

loader.bin(-->xxd)

00000000: b013 b400 cd10                           ......

Makefile

default:
	make asm
	make -r cm.img
	make run
	make clean

run: Makefile cm.img
	qemu-system-i386 -m 32 -fda cm.img

asm: Makefile boot.asm loader.asm
	make -r boot.bin
	make -r loader.bin

clean:
	rm *.img
	rm *.bin

boot.bin: boot.asm
	nasm boot.asm -o boot.bin

loader.bin: loader.asm
	nasm loader.asm -o loader.bin

cm.img: boot.bin loader.bin
	dd if=/dev/zero of=cm.img bs=512 count=2880
	dd if=boot.bin of=cm.img bs=512 count=1 conv=notrunc
	sudo mount -o loop cm.img /media/ocelot/disk
	sudo cp loader.bin /media/ocelot/disk/
	sudo umount /media/ocelot/disk/

测试了好久,还是不对,求教大家

  • 写回答

5条回答 默认 最新

  • 歇歇 2020-12-13 13:57
    关注

    直接改成硬盘

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥15 看一下OPENMV原理图有没有错误
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解
  • ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
  • ¥15 vite打包后,页面出现h.createElement is not a function,但本地运行正常
  • ¥15 Java,消息推送配置
  • ¥15 Java计划序号重编制功能,此功能会对所有序号重新排序,排序后不改变前后置关系。
  • ¥15 关于哈夫曼树应用得到一些问题
  • ¥15 使用sql server语句实现下面两个实验(需要代码和运行结果截图)