中断处理程序的地址。我如何获得它?

时间:2019-11-03 11:26:54

标签: assembly x86

我有以下代码从键盘读取数字:

 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位地址,对吧?如果我的电话号码是0021H或0xxxH,也有问题吗?零会被忽略,对吗?就是21H,XXXh?

我需要在屏幕上打印处理程序的地址。乘法之后我该怎么办?

0 个答案:

没有答案