У меня есть следующий код, который читает число с клавиатуры:
number dw ?
ok db 0
stop db "that's not a number$"
again:
mov ah, 1
int 21h
jmp compare
compare:
cmp al, 0x30
jg greater
mov ok,0
lesser:
mov ok, 1
jmp next
greater:
cmp al, 0x39
jl lesser
mov ok, 0
next:
cmp ok, 1
je go
cmp ok, 0
je notdigit
notdigit:
lea dx, stop
mov ah, 9
int 21h
jmp again
go:
sub al, '0'
add bh, al
jmp go4
go2:
sub al, '0'
add bl, al
shl bl,4
jmp go3
go4:
mov ah, 1
int 21h
jmp go2
jmp again
go3:
mov ah, 1
int 21h
sub al, '0'
add bl,al
mov number, bx
jmp go_on
go_on:
Итак, теперь у меня есть число, скажем, от 0 до 255. Это мой номер прерывания, и теперь я должен умножить егона 4, чтобы получить адрес обработчика. Будет ли это работать так же? Достаточно ли умножить мой номер на 4, чтобы получить начальный адрес обработчика? Например: если я читаю, скажем, 21 адрес будет 84, верно? Также есть ли проблема, если мой номер как 0021H или 0xxxH? Нули игнорируются, верно? Так что это будет просто 21H, XXXh?
Мне нужно напечатать адрес обработчика на экране. Как мне это сделать после умножения?