汇编中断程序具体例子

汇编中断程序具体例子,第1张

我告诉你思路,例子就不举了,很简单:

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语言混合编程时,它们之间是如何传递参数的请用具体例子说明、汇编语言子程序问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9558736.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存