assembly - 中断处理程序的地址。我怎样才能获得它?
问题描述
我有以下代码从键盘读取数字:
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?
我需要在屏幕上打印处理程序的地址。乘法后我该怎么做?
解决方案
推荐阅读
- ios - 快速计算折线上的距离
- android - 为什么我的字体在 Android Studio Preview 中显示,但在设备或模拟器上不起作用?
- apache-spark - Pyspark:如何控制作业在哪些节点上运行?
- angular - 使动态加载的值在 Angular 库中可用
- c - mmap-ed 区域是“单个对象”吗?我可以比较其中的指针吗?
- javascript - 首次调用服务 url 时,Promise 总是返回空白响应
- android - 如何分离电视和手机/平板电脑的 Android 布局?
- python - 当只有一个文件可用时循环使用 concat 函数
- php - 当我向服务器发送 DELETE 请求时,我从服务器收到“Forbidden 403 error”
- c# - C# 解析为 yyyy-MM-ddTHH:mm:ss 格式字符串未被识别为有效的 DateTime