首页 > 解决方案 > 中断处理程序的地址。我怎样才能获得它?

问题描述

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

 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?

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

标签: assemblyx86

解决方案


推荐阅读