T0INT,T1INT都是中断子程序的名字,也相当于地址,我们要跳到那个地方去执行中断子程序!!!!
在程序中,一般只有中断才会用到保护和恢复现场,我到现在还没有看见其它情况用它们的!!!
你的第3个问题就要看你用什么IC了,有的IC自带的有那些功能,你就不需要了,但是51是需要的.至于子程序那就不用中断首地址了,因为你掉用的子程序是固定的,不象中断,不知道发生在什么地方,不好把中断子程序放置,才要定义中断入口!!!!
org 0400H是说明下面的程序地址从0400H开始,即前面的空间不放程序,因为有时前面的空间可能会有特殊用途,比如这个里面的中断向量表应该就是从0003H开始的,不同的单片机会稍有不同,还有就是有些处理器有地址重映射的功能,比如某个闪存的地址空间是从0040H开始的,而我想把程序写入这个闪存里,前面的地址空间有可能是SRAM或DRAM之类的,这时某两个相邻的地址有可能就是两块不同存储芯片的分界点。当然主程序的开始不一定非得0400H,得看具体情况我告诉你思路,例子就不举了,很简单:1、定义一个dword变量xxx用以存储原来的中断向量(所谓中断向量即中断发生时执行的子程序入口地址)
2、编写自己的中断处理过程(yyy proc far),该处理过程内应保存所有可能修改的寄存器,并在返回前恢复原状;一般情况下,如果还需要执行原有中断处理过程,那么调用jmp far xxx链接到原来的中断过程;如果不需要执行原有过程,那么直接以iret返回即可
3、在主程序开始时,先调用int 35h,获取指定中断号的中断向量,将返回的中断向量存储在xxx变量中
4、调用int 25h,将指定的中断号的中断向量指向自己的过程yyy
5、当前程序在退出前,应再次调用int 25h,将被修改掉的中断号的中断向量恢复为xxx变量的值
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)