我告诉你思路,例子就不举了,很简单:
1、定义一个dword变量xxx用以存储原来的中断向量(所谓中断向量即中断发生时执行的子程序入口地址)
2、编写自己的中断处理过程(yyy proc far),该处理过程内应保存所有可能修改的寄存器,并在返回前恢复原状;一般情况下,如果还需要执行原有中断处理过程,那么调用jmp far xxx链接到原来的中断过程;如果不需要执行原有过程,那么直接以iret返回即可
3、在主程序开始时,先调用int 35h,获取指定中断号的中断向量,将返回的中断向量存储在xxx变量中
4、调用int 25h,将指定的中断号的中断向量指向自己的过程yyy
5、当前程序在退出前,应再次调用int 25h,将被修改掉的中断号的中断向量恢复为xxx变量的值
对于参数个数可变的子程序,当参数不超过4个时,可以使用寄存器R0~R3来进行参数传递,当参数超过4个时,还可以使用数据栈来传递参数 在参数传递时,将所有参数看做是存放在连续的内存单元中的字数据。然后,依次将各名字数据传送到寄存器R0,R1,R2,R3; 如果参数多于4个,将剩余的字数据传送到数据栈中,入栈的顺序与参数顺序相反,即最后一个字数据先入栈
楼主劳驾您把代码贴出来好么
对的方式一般只有一个,但错误的方式是有很多的,你想让别人猜你是怎么错的么
======================================================================
这个错误我看到不同人犯不下10次了- -,我也犯过这个错误
如果指令的 *** 作数无法确定数据的位数的话,就必须加ptr
举个例子:
比如cmp [bx][di],al
在指令中al是8位的,所以这条指令的数据可以确定是8位的,因为mov,cmp等的多个 *** 作数的位数都必须是一样的,所以 *** 作数中只要有一个位数可以确定,就不用加ptr,如果像你那样的话,就必须这样写:
cmp byte ptr [bx][di],'a'
类似的,如果是字型的数据的话,就用word ptr
以上就是关于汇编中断程序具体例子全部的内容,包括:汇编中断程序具体例子、汇编语言和C语言混合编程时,它们之间是如何传递参数的请用具体例子说明、汇编语言子程序问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)