如果中断类型码在寄存器中,我想让机器执行 中断类型码在寄存器中的 内中断,应该怎么做?
我试过 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
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指令,调用保存的老中断向量来完成的。
以前写过这种程序,一时找不到,但是思路就是这样的。
楼主查查关于修改中断向量的部分:
把四个字节的老中断向量保存起来,写入新的向量,这就完成的中断向量的修改。
以后,在执行新的中断程序期间,还完全可以调用老的中断程序,这就是用CALL指令,调用保存的老中断向量来完成的。
以前写过这种程序,一时找不到,但是思路就是这样的。
第3个回答 2011-07-07
内中断只允许使用立即数.
汇编语言爱好者为您回答,选我哦
汇编语言爱好者为您回答,选我哦