플랫 어셈블러를 사용하여 어셈블리에 작은 부팅 가능 OS를 만들었습니다. 나는 그것을 PulsarOS라고 부른다. 그러나, 나는 그것에 대한 타이핑 프로그램을 만들고 싶다. 제가 말했듯이, 그것은 모두 x86 어셈블리에 있습니다. 사용자가 입력 할 수있는 곳으로 간단하게 입력하고 입력 한 텍스트가 화면에 표시됩니다. 여기에 코드가 있습니다. 비교적 간단한, 그래서조립 된 부트 로더에서 누른 키를 어떻게 인쇄합니까?
mov ax, 9ch
mov ss, ax
mov sp, 4096d
mov ax, 7c0h
mov ds, ax
;Pulsar Micro-Kernel With Text Editor v1.0.1, running Pulsar OS v1.0.4
;_______BOOTED CODE PAST THIS POINT______
mov ah, 09h
mov cx, 80d
mov al, 20h
MOV SI, HelloString
CALL PrintString
mov bl, 80h
int 10h
mov ah, 09h
mov cx, 1000h
mov al, 20h
mov bl, 17h
int 10h
JMP $
PrintCharacter:
mov ah, 0x0E
mov bh, 0x00
INT 0x10
RET
PrintString:
next_character:
MOV AL, [SI]
INC SI
OR AL, AL
JZ exit_function
CALL PrintCharacter
JMP next_character
exit_function:
RET
;In the quotes is the text shown, no ASCII codes here! :)
HelloString db 'PulsarOS Basic Text Editor v1.0.4 ', 0
;When building with cmd prompt, type: copy /b ytut.bin ytut.img
;ytut is the name of the file saved.
;----------------------------------------
times 510-($-$$) db 0
dw 0xAA55
,하지만 난이 부팅 코드에 추가 할 수있는 단지 것과 같이 간단한 코드합니다 : 그것은 버추얼 박스에서 내 실제 PC에 잘 부팅. 나는 또한 새로운 수업에서 꽤 신선하고, 그래서 나는 5 살인 것처럼 설명합니다. 고맙습니다!
당신은 BIOS 인터럽트 16 시간에 키보드 서비스를 찾을 수 있습니다
아마도 사용자로부터 키 스트로크를 얻으려고하면 유용한 출발점이 될 수 있습니다. BIOS [Int 16h/ah = 0h] (http://www.ctyme.com/intr/rb-1754.htm)는 사용자의 키 입력을 기다리는 데 유용 할 수 있습니다. 이것은 블로킹 함수이므로 호출 할 때 _AL_의 ASCII 문자를 반환하는 키 스트로크가 대기 할 때까지 기다립니다. 범주 별 [BIOS 인터럽트 목록] (http://www.ctyme.com/intr/cat-003.htm)은 [Ralf Brown의 인터럽트 목록] (http://www.ctyme.com/rbrown)에서 찾을 수 있습니다. .htm) –
INT 16h에는 사용할 수있는 BIOS 키보드 루틴이 들어 있습니다. –
예제 코드를 제공해 줄 수 있습니까? @MichaelPetch 사용자가 입력 할 수 있어야합니다. 메모장처럼. 나는 그것을 스스로 알아낼 수 없다. –