易码技术论坛

 找回密码
 加入易码
搜索
查看: 278826|回复: 11

[分享]NC3000的汇编工具

[复制链接]
发表于 2004-11-20 19:31:00 | 显示全部楼层
先支持下~
发表于 2004-11-22 09:29:00 | 显示全部楼层
楼主做的不错,支持。
不过大家不要随便乱反遍汇哦..............
发表于 2004-11-29 10:24:00 | 显示全部楼层
支持!
但比较慢,希望下一版本用多一些汇编。
发表于 2004-11-29 18:08:00 | 显示全部楼层
能做个NC2600的吗???
发表于 2004-12-9 17:28:00 | 显示全部楼层
多谢支持NC_3000
snake_boy 该用户已被删除
发表于 2004-12-9 12:59:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2004-12-12 12:39:00 | 显示全部楼层
不错,但我发现缺两个指令,rti(40),nop(ea)
而且jmp(^)的机器码不是5c而是6c。
加油哦!
发表于 2004-12-12 14:00:00 | 显示全部楼层
好东西~怎么的也要支持一下才行~
发表于 2005-8-23 13:12:00 | 显示全部楼层
[face=隶书]刚下,谢谢老大!!!!![/face]
发表于 2005-8-23 13:26:00 | 显示全部楼层
好东西呀,支持!!!
15473_12339_6411.bmp
15473_12339_6412.bmp
15473_12339_6413.bmp
15473_12339_6421.bmp
15473_12339_6422.bmp
15473_12339_6435.bmp

15473_12339_6408.rar

55 KB, 下载次数: 162

15473_12339_6420.rar

34 KB, 下载次数: 153

15473_12339_6434.rar

121 KB, 下载次数: 149

15473_12339_6436.rar

121 KB, 下载次数: 160

15473_12339_6445.rar

120 KB, 下载次数: 150

15473_12339_6470.rar

125 KB, 下载次数: 149

15473_12339_6471.rar

125 KB, 下载次数: 126

15473_12339_6475.rar

125 KB, 下载次数: 115

15473_12339_6481.rar

125 KB, 下载次数: 104

15473_12339_6583.rar

131 KB, 下载次数: 113

15473_12339_6613.rar

131 KB, 下载次数: 102

发表于 2005-11-4 21:18:00 | 显示全部楼层
支持,顶。!!!!

5696_19683_2291.rar

56 KB, 下载次数: 85

 楼主| 发表于 2004-11-20 19:28:40 | 显示全部楼层 |阅读模式
[upload=rar]viewFile.asp?ID=199[/upload]

刚才发不成,现在再发一次.本来想在SKY上发表的,可惜不开,此软件说明如下:


   XASM BAS版说明
      ----Sleepy
  我近来想编一个游戏.但费了好大力气都不 成功T_T.后来看到了NC3000的GABASIC+.加上近来对汇编有些兴趣.于是想做一个BAS版的XASM(不过到现在我还是不明白这个单词的意思.在这里盗用也不知是否合适).因为这几天考试.所以时间很充足(是不是有些不合逻辑).所以用了六天将它做完.本来还想加点什么.但想到BAS大了的话很麻烦.何况现在有时也会 OUT OF MEMORY ERROR .所以就做到这里为止了.本软件必须运行在NC3000的GVBASIC+上.

以下是说明部分:

1.关于主程序:
在主界面时.有以下功能:F1:跳转.F2:查看标志位(不过意义不大.因为GVBASIC+也会使标志位变化).F3:查找HEX.F4:修改当前位置的HEX.C:CALL 相当于G.E:复制一段到另一段.S:保存一段地址内容到*.sbi文件.R读取sbi文件.H:开始汇编.F:反汇编.
要注意的是.在汇编时.不要太BT.因为程序没有严格过滤字符串.输入LDA$#32 LDA$3)4,之类会有问题(但不加$的字符串程序会自动过滤.不会出错).还有就是.不要乱动在$2000以后有字的地方.因为那是BAS程序载入的地方.还有$4000以后的地方.那是闪存.最好不要增加文件长度.因为在$3900处是查看标志位的数据载入点.在输入(INPUT)状态下可按跳出键退出(GVBASIC+防跳出.只有F4+跳出才能将程序终止).GVBASIC+下DAT文件是支持中文的.可以采用中文文件名.在汇编状态下K是B."."是",".上下左右分别是#$().反汇编时除跳出外任意键继续.而且在反汇编时.后面一大段地址会被数据库的那些字符占满.原因不明.建议不要在后面的地址玩汇编.

关于数据库文件:
数据取自6502教程.共149个不同的数据(包括相同指令的不同寻址.这个数库整得我&#$%?'{">~*直到现在想起来还晕).&表#$data.~表addr.^表addr16.这个数据库已经核对过.应该没什么问题.但因为在下水平有限.如果有错误.还请各位回帖指正.

其它:毕竟是BASIC.功能十分有限.我也曾怀疑它的实用性.它不能切换闪存页码.不能像真正的XASM一样功能强大.但我毕竟下了很大力气去做了.所以请大家多多支持.NC2000A/C NC2600也能使用此软件.但是会慢点.而且如果用的不是GVBASIC+.请将DAT文件名加以修改.否则会报错(因为原BASIC中DAT文件必须以DAT结尾.且不支持中文.会将"汇编数据库.hbd"当做非法文件名).还要将INPUT部分改改.因为它不防跳出.本软件仅是测试版.因为在下水平有限.不知有些编译是否正确.还有就是那个光标去不掉(用GRAPH显示会错误).还有用CLS.TEXT.GRAPH.等都清不掉3行后面部份的小字.在反汇编时看到它们很不爽.不知各位高手有什么办法.还有.如果有什么建议.请回帖告诉在下.如果大家觉得此软件有实用价值.我会推出新的版本.计划使用尽可能多的汇编语句以缩小文件体积.
        ^_^

        ----Sleepy
        2004.11.18


附:汇编与反汇编算法.
首先是数据库.以&代表#$data.以~代表$addr.以^代表$addr16.并将机器码放在最前面.例如LDA$addr16写成ADLDA^.
汇编时.先读取键值.字串小于3只能输入字母.且按输入无效.大于等于3就可以输入HEX和其它符号.对字串处理方式是:长度等于三.不用处理.大于三.先查找$的位置.没有$输入无效.有则处理$后两位.再看前面有否#和长度是否足够.有则处理结束.否则看$后第三位的ASCII码是否在一定范围内.是则表明为addr16.处理从$开始第三位开始共两字节的字符.处理完毕后.根据上面的结果.将数据各自用&^~代替.并查找数据库是否有匹配内容.没有显示ERROR.有则POKE 地址,机器码.地址加一.如果汇编码第一位为B而第二位不为I.则为相对寻址.处理.最后根据是多少位的操作数POKE入相应的值.地址相应增加.然后重复这一过程.
反汇编时.将第一个地址的值换成HEX字串.地址加一.查询数据库.无此机器码.则WO$=??.显示后.继续下一地址.有.则显相应指令.若指令长度为三.处理下一条.否则将下一地址的值当做操作数.再看是不是addr16.是则再往下处理一个地址的值.地址相应增加.显示出来后.继续下一地址.

不知各位星迷是否还有更好的算法.

        ----Sleepy


您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

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

GMT+8, 2024-3-29 00:12 , Processed in 0.012399 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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