易码技术论坛

 找回密码
 加入易码
搜索
查看: 320402|回复: 20

[下载]改过的星端汇编编译工具

[复制链接]
发表于 2005-8-21 09:15:00 | 显示全部楼层
算正式版了?
反应怎么如此冷淡...??
发表于 2005-8-21 17:48:00 | 显示全部楼层
用了下,发现两个bug:
1。像 ldx #$ff,ldy #$ff,lda #$ff这种指令编译出来的都不对
2。bne 被编译成 bvs了
 楼主| 发表于 2005-8-22 11:23:00 | 显示全部楼层
恩?
有这样的问题?
好在不是什么大问题,我回去看下.
不是反映冷淡,是用汇编的人不如玩游戏的多.
发表于 2005-8-22 11:33:00 | 显示全部楼层
不错,但如果能编辑文件就更好了(现在用XASMBAS越用越不爽,感觉太慢了).[em06]
 楼主| 发表于 2005-8-22 12:28:00 | 显示全部楼层
个人觉得:
编辑文件pacmgr已经够强了,WQX自带了文本编辑,16进制的文件或数据文件就在文本里全用.db然后一编译不就行了!不编译也行用include加入,其实我觉得这个编译器的一个好处就是可以在星星上编大一点的程序.
闪人先!(改错去......)
[em32][em32][em32]
4711_12332_1939.jpg
4711_12332_1940.jpg
发表于 2005-8-22 13:32:00 | 显示全部楼层
那改BIN文件呢?用PM?
 楼主| 发表于 2005-8-22 16:21:00 | 显示全部楼层
    直接在星星上改bin属实有点麻烦!因为本来星星的内存就不大,要是改就要直接操作文件,频繁的操作很损闪存啊!
    我知道你的意思,确实,要是能在改写文件的时候,输入汇编指令就直接生成对应的代码,真的很方便!
我在想一个新方法:
    不载入内存,内存只存放修改的相关信息,在保存时重组文件,同时处理地址操作指令的偏移量,其实我在写这个编译器的时候就为它准备了个专门写汇编的编辑器,但是运算量很大.错误也很是难免,就没加进来.
    快开学了,我也没多少时间研究了,因为我还在编别的东东,不过这个新想法让我的手很痒啊,哈哈!估计这几天是弄不出来了,不过肯定会研究,先把改完错的编译器传上来,楼上的高手说的问题解决了,是我疏忽大意搞乱了两个变量
[attachment:4030]

9805_12334_4030.rar

9 KB, 下载次数: 376

发表于 2005-8-22 19:47:00 | 显示全部楼层
这个软件已经不错了,比在WQXHEX上编程方便很多.
另外,提个建议: 现在好像标号后面必须有":",最好能取消这个限制,在星星上写个":"也不是很方便的.
还有,如果能参照6502simulator中的功能和规则把编译功能完善些就更好了.
 楼主| 发表于 2005-8-23 14:19:00 | 显示全部楼层
不用啊!
虽然支持分号";"注释的方法,并不是必须加的,只是可以注释而已,语句的结束是以每行的指令结束后的空格或";"或回车来判断的,如果这行只有空格或";"或只有回车就会被忽略,至于":"就更不用了,因为就没有相关的判断.
确实,现在支持的语句还很简单啊,以后会加强.
发表于 2005-8-23 17:10:00 | 显示全部楼层
楼上理会错了,我说的是标号后面的冒号.
另外,楼上把 # > 和 # < 的意义弄反了,
lda # > XXXX 表示取 XXXX 的高位
如  LDA #>$1234  表示  LDA #$12
      LDA #<1234   表示  LDA #$34
//////////////////////////////////////////////////////////////////////////////////////
还有个问题,比如定义了标号 MAIN,但在 .db 后面似乎不能使用 >MAIN,<MAIN
比如
      .org $4000
      .db "binfile",$4c,<MAIN,>MAIN,"..head"
msg:  .db "hello,world"
MAIN:
        ....
就编译不出真确的代码。
 楼主| 发表于 2005-8-23 18:30:00 | 显示全部楼层
LDA #MAIN,MAIN,"..head"
汗!没这么用过,这条语句取到的A=什么?
或者是lda MAIN 和lda "..head"?
真的不明白,回去先解决其他的问题了.
冒号知道了,确实可以去掉.
高低位地址回去改.
msg:  .db "hello,world"
MAIN:
这个按理论上不应该有错我回去看看.
 楼主| 发表于 2005-8-20 11:17:00 | 显示全部楼层
倒啊!
怎么写完一发就会在内容上少些东西?
先做个txt传上来,上面的实在看不懂就看这个.
[upload=txt]viewFile.asp?ID=3984[/upload]
上面的贴竟然编辑不了,就写到下面了:
label可以是中文,
定义宏的时候
ok : .macro
ok就是宏名了,模仿6502sim的语法.

9805_12299_3984.txt

2 KB, 下载次数: 358

发表于 2005-8-20 12:10:00 | 显示全部楼层
强烈支持!!!(虽然我的TC800无法运行汇编)
希望能出个6502的模拟器^_^
[em05]
 楼主| 发表于 2005-8-20 13:09:00 | 显示全部楼层
那速度会是奇慢啊!
发表于 2005-8-23 18:36:00 | 显示全部楼层

汗,原话是这样的。。。
一发出来就变样了,干脆用贴图。
9805_12343_4073.jpg
 楼主| 发表于 2005-8-25 16:25:00 | 显示全部楼层
这个......这回真的是没有相关的判断,好在是结构化的程序,现成改的,现在可以像上面那样用.db了.
*注意:支持中文标号
这回又把程序改了:
标号后面的冒号可有可无,是为了方便书写和兼容其他的程序,就是指令要和标号至少留一个空格,而语句不用:
标号 lda $8888
标号.db "   "
立即寻址'#':
#[小于号]label 取label的低位
#[大于号]label 取label的高位
#label 如果label大于255则取label的高位数值,否则取label本来的值

又加了个语句:.DW
用法一样:
标号1 .dw $abcd,标号1
而且.dw也可以在任何地方用,同样因为编译时先处理label,和顺序无关.
改了点反汇编的错误,和从pc端传下来的文本不能正常编译的错误.
还有一点以前忘说了,中断可以直接用int.
声明一下:编译的时候只有指令,语句和16进制的数值会忽略大小写,写的时候注意下.
[upload=rar]viewFile.asp?ID=4120[/upload]
程序放上来了,使用前最好仔细阅读压缩文件里的说明(因为加了很多东西!),我试着在星星上编译了一下汇编专区的"NC1020的DEBUG"的文本,没有出现问题(790行,105个标号!!!),程序暂时就先改到这,因为现在没机会改了(马上开学了,要和跟我相处了一个月的本本说88了......),再加强功能有机会再改!
[em10]

9805_12346_4120.rar

10 KB, 下载次数: 310

发表于 2005-8-29 09:03:00 | 显示全部楼层
编好以后怎样打开嫩?
 楼主| 发表于 2005-9-2 15:07:00 | 显示全部楼层
用pacmgr copy到“/应用程序”里(用改过属性的gvm)
发表于 2006-4-30 11:19:00 | 显示全部楼层
发现两个错误!

and #$xx ;编译后为 00h xxh  应该是 29h xxh

lda $00xx,y ;正确的应该是 b9h xxh 00h

呵呵,加油呀!


发表于 2006-5-1 16:58:00 | 显示全部楼层
hao


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

本版积分规则

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

GMT+8, 2025-4-29 13:18 , Processed in 0.021530 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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