我有以下代码从键盘读取数字:
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?
我需要在屏幕上打印处理程序的地址。乘法之后我该怎么办?