Как я могу получить пользовательский ввод в мой загрузчик сборки? - PullRequest
0 голосов
/ 21 декабря 2018

Я работаю над сборкой загрузчика.Мне нужна помощь с получением информации от пользователя.Я использую такой код для печати на экране (в start).В getInput я пытался получить ввод от пользователя, но он не работал.Итак, как я могу это сделать?

org 0x7C00
BITS 16

start:
    cli                ; Disable interrupts
mov si, bootMsg1   ; Point SI to message
mov ah, 0x0E     ; Indicate BIOS we're going to print chars
.loop lodsb       ; Loads SI to AL
or al,al      ; Checks if the end of string
jz seperate
or al,al
jz halt   ; Jump to halt at the end
int 0x10      ; Otherwise, call interrupt for printing the char
jmp .loop     ; Next iteration of loop

...
getInput:
    cli
mov ah, 08 ; Indicate BIOS to get input
int 21h
mov ah,02
mov DL,AL
int 21h
MOV AH,4Ch   ; Function to exit
    MOV AL,00    ; Return 00
    INT 21h



halt: hlt ; CPU command to halt the execution
bootMsg1:   db "Slight Bootloader 1, Welcome!",13,10     ; Message
bootMsg2: db"------------",13,10

1 Ответ

0 голосов
/ 21 декабря 2018

Использование Int 16h/AH=00h.
Некоторые выводятся как Int 21h/AH=08h.

Int 16h с утилитами ввода, Int 10h с утилитами вывода (видео) .


Пример.
Подождите, пока пользователь нажмет клавишу, а затем "перезагрузите".

BITS 16

xor ax, ax
int 16h

int 19h

TIMES 510 - ($-$$) db 0
dw 0aa55h
...