Я создал небольшую загрузочную ОС в сборке с плоским ассемблером. Я называю это PulsarOS. Однако я хочу создать для него программу набора текста. Как я уже сказал, все в сборке x86. Я хочу, чтобы это просто, где пользователь может печатать, и напечатанный текст отображается на экране. Вот код. Он загружается только штрафом в VirtualBox и на моем физическом компьютере:Как напечатать нажатую клавишу клавиатуры в загрузчике сборки?
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
Таким образом, это относительно просто, но я хочу просто-как-простой код, который я могу добавить в загружаемой код. Я также довольно новичок в Ассамблее, свежий из своих классов, поэтому объясню это, как будто мне пять. Спасибо!
Возможно, попытка получить нажатие клавиши от пользователя станет полезной отправной точкой. BIOS [Int 16h/ah = 0h] (http://www.ctyme.com/intr/rb-1754.htm) может оказаться полезным ждать нажатия клавиши от пользователя. Это функция блокировки, поэтому, когда вы ее вызываете, она будет ждать нажатия клавиши, возвращающей символ ASCII в _AL_. [Список прерываний BIOS] (http://www.ctyme.com/intr/cat-003.htm) по категориям можно найти в [списке прерываний Ralf Brown] (http://www.ctyme.com/rbrown .htm) –
INT 16h содержит подпрограммы BIOS, которые вы можете использовать. –
Можете ли вы дать мне пример кода? @MichaelPetch Все, что мне нужно, это чтобы пользователь мог вводить текст. Как и NotePad. Кажется, я не могу понять это самостоятельно. –