OS/OS from Scratch
[OS] 03. Boot Sector Memory
jschang
2021. 6. 20. 15:03
서론
이번 강의에서는 가장 기본적인 Boot Sector에서 메모리의 구조에 대해 알아보겠습니다. 해당 Github 강의는 다음과 같습니다.
https://github.com/cfenollosa/os-tutorial/tree/master/03-bootsector-memory
cfenollosa/os-tutorial
How to create an OS from scratch. Contribute to cfenollosa/os-tutorial development by creating an account on GitHub.
github.com
이론
메모리 구조
BIOS는 Boot Sector를 0x7c00주소부터 채우게 됩니다. 이를 고려해 Boot Sector를 만듭니다.
Assembly org 명령어
[org 0x7c00]
위 Assembly 코드는 모든 Assembly코드에서 0x7c00만큼 offset을 설정하는 코드입니다. 위 코드를 삽입하면 이후 나타나는 메모리 주소에서 0x7c00만큼의 주소가 더해져 계산됩니다.
코드
[org 0x7c00]
mov ah, 0x0e
mov al, "1"
int 0x10
mov al, [the_secret]
int 0x10
jmp $
the_secret:
db "X"
times 510-($-$$) db 0
dw 0xaa55
실행 결과
위 코드를 실행 bin파일로 컴파일하고, qemu로 실행시키면 다음과 같은 화면이 나옵니다.