leesoft 发表于 2006-10-30 15:50:26

6502有三种中断:复位中断,软件中断,硬件中断

leesoft 发表于 2006-10-30 15:51:36

中断向量在0xfffa-0xffff

lzjseed 发表于 2006-10-30 16:29:22

能详细的说明下吗?比如 int$ac09的程序在哪?

leesoft 发表于 2006-10-30 16:48:46

6502没有int指令
6502的软中断指令是brk

Isword 发表于 2006-10-30 20:04:31

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中断将不再发生

lzjseed 发表于 2006-10-31 15:55:16

那软中断的程序执行地址怎么寻找呢?

lzjseed 发表于 2006-10-31 22:20:13

lee,你能帮我详细解答下吗?

Anson 发表于 2006-11-2 19:44:56

$ac09 翻到$ac页 然后取$4000+9*2和$4001+9*2为地址 跳转
如果是$cxyy 这样的 则是让地址$0a=#$0x 然后取$a000+yy*2和$a001+yy*2为地址
好似是这样的 很久没碰过汇编了 不晓得记得对不对=v=

Isword 发表于 2006-11-2 22:45:28

引用第8楼不炫耀会死星人于2006-11-02 19:44发表的“”:
$ac09 翻到$ac页 然后取$4000+9*2和$4001+9*2为地址 跳转
如果是$cxyy 这样的 则是让地址$0a=#$0x 然后取$a000+yy*2和$a001+yy*2为地址
好似是这样的 很久没碰过汇编了 不晓得记得对不对=v=
没有错的,哈哈!!

lzjseed 发表于 2006-11-4 00:34:07

明白了,太感谢了!

lzjseed 发表于 2006-10-30 15:19:28

有个问题

请问6502中中断调用的子程序的入口地址怎么找?
页: [1]
查看完整版本: 有个问题