易码技术论坛

 找回密码
 加入易码
搜索
楼主: TYCY

求助,关于6502中断!

[复制链接]
 楼主| 发表于 2007-12-18 12:34:43 | 显示全部楼层
也就是说换算成二进制后,就是<取后8位,>取前 8位??
发表于 2007-12-18 22:55:01 | 显示全部楼层
NAND --> #$3000
#<NAND --> 00h
#>NAND --> 30h
就是那意思。

[ 本帖最后由 dragon_ 于 2007-12-22 00:42 编辑 ]
 楼主| 发表于 2007-12-19 08:30:12 | 显示全部楼层
INT $C733(转数字为ASCII码,入口: $80,$81,结果放在: $80-$85)
我想这个中断应该比较简单,所以想跟踪一下,学习下.
因为C000+$33=$C066:C000+$33+1=$C067
所以我就这样:
2000:
     LDA #$07
     STA $0A
     LDX $C066
     LDY $C067
     RTS
     G 2000
接着按下R,得到X: 24 Y: D4
于是,我直接 U D424(不知到这里应不应该用 U D42407,07页嘛,我用的是tool-2600,我的机形是NC2600C)
得到如下代码:
D424- BF       ??
D425- 8D F0 03 STA $03F0
D428- A5 C7    LDA $C7
D42A- 60       RTS
为什么会出现这样的代码?不知道我那里错了,望指点!
还有很多类式情况(都是按上面那样找的,除非是不同类的中断,如INT $0522)
比如:INT $CB01(内置DEBUG)
我算完后取得最终地址为$C9E9
结果反汇编$C9E9后是这样:
NOP
NOP
..(省略12个,共15个)
NOP
RTS
居然是这样的代码,那不是什么也不执行吗?
各种各样的问题我遇到了很多,怎么都想不明白!

[ 本帖最后由 TYCY 于 2007-12-19 08:31 编辑 ]
发表于 2007-12-19 13:45:31 | 显示全部楼层
U D42407是把$00置为07后跳到$D424处。不是把$0A置为07后跳到$D424处。
显然在你U D42407的时候,tool-2600自己已经把$0A的值改回去了。
tool-2600我没用过,不知道怎么把$0A的值设为07并保持住。你仔细看看使用说明上有没有写吧。
发表于 2007-12-19 13:46:59 | 显示全部楼层
这种汇编工具一般会有直接跟踪中断的选项,你可以找找看。
 楼主| 发表于 2007-12-19 18:21:13 | 显示全部楼层
不行的,说明上说用X可以跟踪系统中断,可是用了后一会就死机了,根本没用
还有就是我用的是  U D424,不是 U D42407,我是问应不应该用U D424007

[ 本帖最后由 TYCY 于 2007-12-19 18:27 编辑 ]
 楼主| 发表于 2007-12-19 18:30:55 | 显示全部楼层
还有,那么你们是怎么跟踪系统中断的,用WQXHEX?
发表于 2007-12-19 23:00:18 | 显示全部楼层
反正U D42407是不行的。你试试先置$0A为07,再U D424看看。
NC2600上的汇编工具没用过,WQXHEX2600的功能不具体知道。你可以试试。
我的机子是TC808,一般用ASMFUN就够了。但那是我自己移植的,NC2600没有ASMFUN。

[ 本帖最后由 dragon_ 于 2007-12-19 23:02 编辑 ]
发表于 2007-12-19 23:08:32 | 显示全部楼层
也不是,根据你说的情况,可能在U D424的时候,tool-2600自己也会把$0A的值改回去。
换个汇编工具吧。WQXHEX的功能算是很全了。
 楼主| 发表于 2007-12-20 13:53:18 | 显示全部楼层
恩,那我在看看,很多时候我能看明白代码的意思,但是他们组合起来有什么用却不是很明白,不知道怎么回事,
 楼主| 发表于 2007-12-21 13:36:21 | 显示全部楼层
ROL和ROR是怎么用的
不是说ROL是把A左移一位,然后把C补在最后吗
我是这样的(前提C为0)
LDA #$03(00000011)
ROL
RTS
为什么A变为07(00000111)了,不是应该是06(00000110)吗?C位没有啊
应该补0啊
 楼主| 发表于 2007-12-21 13:37:13 | 显示全部楼层
还有,WQXDEBUG那里有啊
就是可以载入其他文件的那个
发表于 2007-12-21 14:07:20 | 显示全部楼层
变成00000111只能说明C还是1,你的程序写错了。
没研究过Nc2600,软件你自己找吧。

[ 本帖最后由 dragon_ 于 2007-12-21 14:15 编辑 ]
发表于 2007-12-21 14:14:47 | 显示全部楼层
不必拘泥于软件,直接利用pacmgr的反汇编功能就可以反汇编应用程序的。
论坛里也有不少LAVA版的反汇编软件。可以边反汇编边看的。
发表于 2007-12-22 00:57:14 | 显示全部楼层
原帖由 TYCY 于 2007-12-21 13:36 发表
ROL和ROR是怎么用的
不是说ROL是把A左移一位,然后把C补在最后吗
我是这样的(前提C为0)
LDA #$03(00000011)
ROL
RTS
为什么A变为07(00000111)了,不是应该是06(00000110)吗?C位没有啊
应该补0啊 ...

你要是一直用汇编工具学汇编的话,最好不要用A,X,Y等寄存器来验证某条指令的正确性,因为汇编工具本身也会用到这些寄存器。建议用某一空闲地址来验证。比如:
LDA #$03(00000011)
STA $A0
CLC
ROL $A0
RTS
然后看看$A0的值是什么。
对了,LDA指令好像会影响C标志位的……
发表于 2007-12-22 10:20:50 | 显示全部楼层
lda不影响C位的。
 楼主| 发表于 2007-12-22 13:01:17 | 显示全部楼层
恩,那我知道了!
反汇编时有的地方是
.DB  那没就不能正常反汇编了啊
发表于 2007-12-22 15:57:32 | 显示全部楼层
啊哈,印象不深了。一般都是现查的。
DB的话就没什么办法了。那些数据你只能自己分析其中的意思。
 楼主| 发表于 2007-12-23 08:17:11 | 显示全部楼层
那样反的话有难度啊
因为我不知道那里是数据去啊
用PACMAR打开也不太看的太清楚
 楼主| 发表于 2007-12-23 08:24:38 | 显示全部楼层
还有一个问题
汇编怎么实现象LAVA中的 CheckKey啊??Inkey
还有就是打开文件后文件里的数据在那里
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-3-28 18:22 , Processed in 0.008956 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表