현재 저는 대학 과제를 수행하는 데 기본 OS를 사용하고 있습니다. 나는 x86 어셈블리 언어로 일하고있다. Bochs에서 응용 프로그램을 실행할 때 위의 오류가 발생하여 부트 로더의 두 번째 단계로 전환하는 데 문제가있는 것 같습니다. 테스트 결과, 오류는 응용 프로그램이 메모리에서 프로그램을 올바르게 읽지 못했기 때문에 발생했습니다. 부트 로더의 첫 번째 단계에서 실수가 있었거나 makefile에서 잘못된 부분이 있기 때문입니다. 나는 아래이 모두 포함됩니다 : 부트 로더의어셈블리 언어 OS 부트 로더 "존재하지 않는 세그먼트 레지스터 7 사용 중"오류
1 단계 :
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
메이크 : 어떤 도움을 주시면 감사하겠습니다
.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 dl을 만지지도 않았는데, 0 부분은 그 다음을 보게 될 것이다. – FloppyCatfish
어떤 이유로 든 담당자를 드릴 수 없습니다. – FloppyCatfish