私は現在、大学の割り当てのために基本的なOSで作業しています。私はx86アセンブリ言語で作業しています。 Bochsでアプリケーションを実行しようとすると、上記のエラーが発生し、私のブートローダの第2段階に切り替える際に問題があるようです。私のテストでは、エラーは、アプリケーションがメモリからプログラムを正しく読んでいない結果であると考えています。ブートローダの最初の段階で間違っているか、またはmakefileに何か間違っているからです。ブートローダのアセンブリ言語OSブートローダ "存在しないセグメントレジスタ7を使用"エラー
第一段階:
BITS 16
ORG 7C00h
jmp Real_Mode_Start
%include "functions_16.asm"
Read_Failed:
mov si, boot_error
call Console_WriteLine_16
ret
Real_Mode_Start:
cli
xor ax, ax
mov ss, ax
mov sp, 4000h
mov ds, ax
mov si, boot_message
call Console_WriteLine_16
mov al, 5
mov bx, 9000h
mov ch, 0
mov dh, 0
mov dl, 0
mov cl, 2
int 13h
cmp al, 5
jne Read_Failed
jmp 9000h
hlt
; Data
boot_message: db 'MacOS Remastered' , 0
boot_error: db 'Boot Failed' , 0
times 510 - ($ - $$) db 0
dw 0AA55h
のMakefile:
.DEFAULT_GOAL:=all
Imgname=MacRemastered
.SUFFIXES: .iso .img .bin .asm
%.bin: %.asm
nasm -w+all -f bin -o [email protected] $<
boot.bin: boot.asm functions_16.asm
boot2.bin: boot.asm functions_16.asm
$(Imgname).iso: boot.bin boot2.bin
cp floppy_image/$(Imgname).img $(Imgname).img
dd status=noxfer conv=notrunc if=boot.bin of=$(Imgname).img
dd status=noxfer conv=notrunc seek=1 if=boot2.bin of=$(Imgname).img
rm -rf cdiso
mkdir cdiso
cp $(Imgname).img cdiso/$(Imgname).img
mkisofs -o $(Imgname).iso -b $(Imgname).img cdiso/
all: $(Imgname).iso
clean:
rm -f boot.bin
rm -f boot2.bin
rm -f $(Imgname).img
rm -f $(Imgname).iso
rm -rf cdiso
任意の助けをいただければ幸い私は以下のこれらの両方が含まれます。
エラーを報告しているラインを教えてください。投稿したブートセクタは正常に見えます。それはあなたがロードしている後続のコードの中にある可能性があります。 –
驚くばかりです、ああ2に固定してください。私はまだmov部分に触れていない、0部はまだそれを見ている。 – FloppyCatfish
なんらかの理由であなたに代理人を与えることはできません – FloppyCatfish