xor ax, ax ;sets the stack and segment registers
mov ds, ax
mov es, ax
mov ss, ax
mov bp, 0x7c00
mov sp, bp
cld ;clears direction flag
mov si, question ;prints the question
call printstring
mov di, skibidi_cringe ;get user input
inputloop:
xor ax, ax
int 0x16
cmp ax, 0x0e08
je backspace
cmp ax, 0x1c0d
je enter
stosb
mov ah, 0x0E
int 0x10
jmp inputloop
backspace: ;when backspace has been pressed
dec di ;decrement destination index register
mov ax, 0x0e08 ;remove a character
int 0x10
jmp inputloop ;go back to input loop
enter: ;when enter was pressed
mov ah, 3 ;move one line down
mov bh, 0
int 0x10
mov ah, 2
xor dh, dh
inc dl
int 0x10
mov cx, 3
mov si, skibidi_cringe ;the input
mov di, goodanswer ;and the good answer
repe cmpsb ;repeat 3 times compare si and di
je correct ;if it was the same go to correct
jne incorrect ;if it wasn't go to incorrect
correct: ;prints correct and hangs
mov si, right
call printstring
jmp $
incorrect: ;prints the braincell string and hangs
mov si, wrong
call printstring
jmp $
printstring: ;simple routine for printing strings
lodsb
cmp al, 0
je return
mov ah, 0x0e
int 0x10
jmp printstring
return:
ret
question: db "Does skibidi toilet suck?", 0
skibidi_cringe: times 3 db 0
goodanswer: db "Yes"
right: db "Correct!", 0
wrong: db "Use your braincells", 0