关于汇编 int 内中断 的问题

如果中断类型码在寄存器中,我想让机器执行 中断类型码在寄存器中的 内中断,应该怎么做?
我试过 int ax
但是机器执行时,不管ax的值是多少,都执行 int 0A
如果要让机器执行中断时,把 ax 里面值作为中断类型码,应该怎么做?

内中断是只能使用立即数的,例如int 21h,int 16h等,如果要调用int ax这种指令的话是不行的,但是我们可以其他办法实现,根据ax的值找到对应中断在中断向量表中的位置0:[ax*4],0:[ax*4+2],取得相应中断的入口段地址和偏移地址,再利用call指令调用就可以了,效果是完全一样的,希望对你有点帮助 ~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-07
我不清楚你要这样做的意义,但可以用如下方法实现:(.com格式显示HELLO)

code segment
main proc far
assume cs:code,ds:code
org 100h

start:
mov ah,9
mov dx,offset mess1
mov al,21h
mov int_num,al
db 0cdh
int_num db 0
int 20h
mess1 db 'Hello!',0dh,0ah,24h
main endp
code ends
end start
第2个回答  2011-07-07
根据中断类型码,把中断向量的四个字节找出来,用CALL指令来调用,即可。
楼主查查关于修改中断向量的部分:
把四个字节的老中断向量保存起来,写入新的向量,这就完成的中断向量的修改。
以后,在执行新的中断程序期间,还完全可以调用老的中断程序,这就是用CALL指令,调用保存的老中断向量来完成的。
以前写过这种程序,一时找不到,但是思路就是这样的。
第3个回答  2011-07-07
内中断只允许使用立即数.

汇编语言爱好者为您回答,选我哦

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网