Why does this only in Real Mode work? I didn't use interrupts.
Code: Select all
cli
mov bx, 0
mov ax, 0xb800
mov ds, ax
xor si, si ;si = 0
anf:
mov dx, 0x64
in al, dx
and al, 1
cmp al, 0
je anf
mov dx, 0x60
in al, dx
xor bx, 1
cmp bx, 0
je anf
cmp al, 0x1E ;'A'
je a
cmp al, 0x30
je b
cmp al, 0x2E
je c
cmp al, 0x20
je d
cmp al, 0x12
je e
cmp al, 0x21
je f
cmp al, 0x22
je g
cmp al, 0x23
je h
cmp al, 0x17
je i
cmp al, 0x24
je j
cmp al, 0x25
je k
cmp al, 0x26
je l
cmp al, 0x32
je m
cmp al, 0x31
je n
cmp al, 0x18
je o
cmp al, 0x19
je p
cmp al, 0x10
je q
cmp al, 0x13
je r
cmp al, 0x1F
je s
cmp al, 0x14
je t
cmp al, 0x16
je u
cmp al, 0x2F
je v
cmp al, 0x11
je w
cmp al, 0x2D
je x
cmp al, 0x15
je y
cmp al, 0x2C
je z
mov cl,'-'
abc:
mov [si], cl
inc si
inc si
cmp si, 4000
jne anf
xor si, si
jmp anf
a:
mov cl, 'a'
jmp abc
b:
mov cl, 'b'
jmp abc
c:
mov cl, 'c'
jmp abc
d:
mov cl, 'd'
jmp abc
e:
mov cl, 'e'
jmp abc
f:
mov cl, 'f'
jmp abc
g:
mov cl, 'g'
jmp abc
h:
mov cl, 'h'
jmp abc
i:
mov cl, 'i'
jmp abc
j:
mov cl, 'j'
jmp abc
k:
mov cl, 'k'
jmp abc
l:
mov cl, 'l'
jmp abc
m:
mov cl, 'm'
jmp abc
n:
mov cl, 'n'
jmp abc
o:
mov cl, 'o'
jmp abc
p:
mov cl, 'p'
jmp abc
q:
mov cl, 'q'
jmp abc
r:
mov cl, 'r'
jmp abc
s:
mov cl, 's'
jmp abc
t:
mov cl, 't'
jmp abc
u:
mov cl, 'u'
jmp abc
v:
mov cl, 'v'
jmp abc
w:
mov cl, 'w'
jmp abc
x:
mov cl, 'x'
jmp abc
y:
mov cl, 'y'
jmp abc
z:
mov cl, 'z'
jmp abc
;times 510-($-$$) db 0 ;you can boot it!
;dw 0xAA55