我看到了你的project,知道了你的问题是什么。
首先,FCB是定义常量的伪指令,不能用于定义或初始化变量。因为变量放在RAM中,上电后的值是不确定的。放在RAM中的变量必须用数值指令(STA、STX、MOV等)进行赋值。
所以,你在程序中将NUMTABLE定义在RAM的ZERO_PAGE中,然后用FCB伪指令去赋值,编译器是不认的。
但是,你用ORG然后再用FCB这种方式,可以说是骗过了编译器。此时编译器不知道你的0x50的地址到底是RAM还是ROM,因为你用了FCB指令,就当作常数赋值了。
但实际上,这种作法虽然能骗过编译器,也只能在软件仿真时有用。当硬件仿真或把程序写入芯片时就会出错。因为RAM本身在写芯片时是不写的,而且其中的值复位后是不确定的。
[此贴子已经被strongchen于2005-10-10 10:19:04编辑过] |