Адрес обработчика прерываний. Как я могу получить это? - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть следующий код, который читает число с клавиатуры:

 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?

Мне нужно напечатать адрес обработчика на экране. Как мне это сделать после умножения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...