내 자신의 부트 로더를 작성하기로 결정했습니다.CLI가 비디오 메모리에 미치는 영향
qemu가 이미 3로 설정되어 있지만 비디오 모드를 3으로 설정할 수 있었고 비디오 메모리를 직접 변경하여 화면의 첫 번째 줄의 첫 문자에 'A'를 인쇄했습니다.
[org 0x7C00] ;Address BIOS loads the bootloader into
[bits 16]
;Set video mode to mode 3
mov al, 0x03
mov ah, 0x00
int 0x10
mov ax, 0xB800
mov es, ax
mov bx, 0
mov [es:bx], byte 65
mov [es:bx+1], byte 0x0F
;cli
JMP $ ;Infinite loop, hang it here.
times 510 - ($ - $$) db 0 ;Fill the rest of sector with 0
dw 0xAA55 ;Add boot signature at the end of bootloader
주석 처리 된 cli 명령에 유의하십시오. 세미콜론과 세미콜론 만 제거하면 'A'가 더 이상 인쇄되지 않습니다. 나는 IF 플래그를 지우는 것이 메모리에 어떤 영향을 미치는지를 이해하는 방법을 이해하지 못한다. 누군가가 이것에 대해 밝힐 수 있다면 좋을 것입니다.
아, 그리고에 대한 그 가치가 무엇인지, 내가 부트 로더 내가 다른 곳에서 골조있어
nasm -o bl.bin bl.asm
qemu -fda bl.bin
를 실행하고 내가 할 수있는만큼을 읽기 위해 사용하는 명령. 누군가가 스택을 설정하는 것에 대해 언급했지만 문제와 관련이 있는지 이해하지 못합니다.
정말 감사드립니다!
다른 방법이 아닌가요? CLI가 그대로 유지되면 'A'가 표시되고 CLI가 주석 처리 된 경우 'A'가 표시되지 않습니까? –
아니, 이쪽으로 돌다. – oadams