易码技术论坛

 找回密码
 加入易码
搜索
12
返回列表 发新帖
楼主: gameghost

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

[复制链接]
 楼主| 发表于 2005-8-20 11:10:03 | 显示全部楼层 |阅读模式
放假了终于有机会完成我的编译器了
以前那个错误真的是太多了,这次我把编译的程序重写了一便,增强了很多功能要是用的话就要仔细看下面的说明了)
目前支持的语句:
   这些语句都可以在程序里的任意地方使用,没有位置限制,这样可以更灵活.
.org
格式:
[空格>=1].org[空格>=1][十进制或十六进制的数值]
当不定义.org时,默认的开始地址为0.
.include
格式:
[空格>=1].include[空格>=1]"完整文件名及路径"
.db
格式:
[空格>=1].db[空格>=1]"我",$ff,123
注意.db定义的是字符和数值,引号中的字符并不是字符串,没有在末尾加0,要手动加.
.macro
格式:
[顶格写宏名][:][空格>=1].macro
[宏体]
[空格>=1].endm
.bitmap(直接载入对应文件数据)
格式:
[空格>=1].bitmap[空格>=1]"完整文件名及路径"
这个指令会将其所引用的文件的全部数据写入编译的文件中.
    目前编译器只支持十进制和十六进制的数值,二进制好像用的不多就没写有关的判断.编译器只在指令和语句上会忽略大小写,其他的都不会,比如label.宏名.db.和引用的文件名,写的时候要注意.
    编译器可以操作label,如:
   lda #<graph+$cd   
   cmp #>graph-25
因为我也不很了解语法,所以如果graph=$1234我就让"<"得到的是$12,">"是$34,而且要非常注意,后面的$cd是先加到graph上后再做取值.其他的指令也是.
lda start-3,y
label=$4000     <----1
label:          <----2
只要是像上面两种情况出现的label就可以直接用于直接寻址和间接寻址或用于lda #<label
    给label赋值可以在程序的任何地方,编译时会预先处理label.
label被重复定义不会给出提示,但后来定义的数值无效赋值也一样.label最长30个字节.
    include的文件中出现的label同样可以被使用,不过对于宏是当然的了
    最多可以include 50个文件,为了减少出错几率就没有让include可以嵌套include
    目前限制一行最多可以有200个字符,最多200个label及200个macro,同样macro也不可以嵌套.文件的大小没有限制.
最随便的格式:
label:      lda    4555
   sta    (    $    ef),y
         .include           "/MyJob/asdasd.bin"
     .db    123,$  df,"space"
label          =            2345
不过并不推荐像上面这样写  因为会拖慢一部分速度.
因为程序是用LavaXIde3.1编译的,没法在6502机型上用getword,所以只能输入英文文件名,输入时用"输入法"键来切换大小写和数字.
最后要注意的是,编译完的文件会存放在根目录的MyJob目录下.

不知道以前laugj说的BITMAP是什么样的格式,反正我先做成这样了

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

本版积分规则

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

GMT+8, 2025-4-29 12:29 , Processed in 0.015155 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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