6502的软中断指令是brk 6502系统共有三种中断源
1.RESET
中断优先级:最高
中断时pc指向:$fffc
屏蔽:不可屏蔽
说明:此中断在按下"RESET"键时发生,中断后系统将初始化状态,并转向执行jmp($fffc)
2.NMI
中断优先级:高
中断时pc指向:$fffa
屏蔽:不可屏蔽
说明:NMI意即:no maskable interrupt,不可屏蔽中断,wqx用它来刷新屏幕,每隔一段时间,将显存中的内容刷新到屏幕,对应的刷新程序在jmp($fffa),这个中断是不可被sei命令关闭的。
3.IRQ/BRK
中断优先级:最低
中断时pc指向:$fffe
屏蔽:irq可以被sei命令屏蔽
说明:这个中断处理两种情况:irq(硬件中断)和brk(软件中断),在中断响应程序中会辨别是irq还是brk以执行不同的部分,irq主要响应一些硬件变化,比如当系统时间改变,键盘有键按下,自动关机等等,即会进行相应处理,比如将按键更新到内存或关闭系统等等。brk则是我们平时在汇编中用到的int$命令,wqx中用于跨页执行代码。当执行了sei命令将中断允许位i设为1后,irq中断将不再发生 那软中断的程序执行地址怎么寻找呢? lee,你能帮我详细解答下吗? $ac09 翻到$ac页 然后取$4000+9*2和$4001+9*2为地址 跳转
如果是$cxyy 这样的 则是让地址$0a=#$0x 然后取$a000+yy*2和$a001+yy*2为地址
好似是这样的 很久没碰过汇编了 不晓得记得对不对=v= 引用第8楼不炫耀会死星人于2006-11-02 19:44发表的“”:
$ac09 翻到$ac页 然后取$4000+9*2和$4001+9*2为地址 跳转
如果是$cxyy 这样的 则是让地址$0a=#$0x 然后取$a000+yy*2和$a001+yy*2为地址
好似是这样的 很久没碰过汇编了 不晓得记得对不对=v=
没有错的,哈哈!! 明白了,太感谢了!
有个问题
请问6502中中断调用的子程序的入口地址怎么找?
页:
[1]