//标号
标号代表该行指令的地址,标号的出现,极大的方便了我们编写程序,我们
从此不再需要记地址了,我举一个例子来说明
A 2000
2000: LDX #$00
2002: LDA #$00
2004: STA $3000,X
2007: CPX #$FF
2009: BEQ $200F
200B: INX
200C: JMP $2004
200F: RTS
大家应该知道,我们写上面的程序是多么艰难,还要算出下一指令的地址,在使用跳转指令时就更加不方便了.
我们来看看用 6502_Macroassembler &Simulator 编写上面的程序是多么的容易
.ORG $2000 ;定义程序开始地址为 $2000
.DB "HELLO WORLD" ;定义字符
LDX #$00
LDA #$00
L1: STA $3000,X ;这里L1就是标号,代表当前指令的地址
CPX #$FF
BEQ L2
INX
JMP L1
L2: RTS ;这里L2也是标号,代表当前指令的地址
这里我们使用了两个标号,L1,L2,他们分别代表当前指令的地址,在编译的时候,编译器会算出
该标号代表的地址,所以说,标号的出现,使得我们不再把大量的时间用在地址的计算上,而且在修改
程序的时候也显得更加方便
例如,我们如果要在下面的程序中,插入一个指令,那么所有的地址都要发生变化,大家请看
A 2000
2000: LDX #$00
2002: LDA #$00
2004: STA $3000,X
2007: CPX #$FF
2009: BEQ $200F
200B: INX
200C: JMP $2004
200F: RTS
假如我们要在地址2002那里加一指令 LDY #$00
那么我们整个程序是不是都要变,大家请看,红的部分代表要修改的
A 2000
2000: LDX #$00
2002: LDY #$00
2004: LDA #$00
2006: STA $3000,X
2009: CPX #$FF
200B: BEQ $200F
200D: INX
200E: JMP $2006
20011: RTS
才加那么一个字节,就要修改怎么多,这是多么令人痛苦的事了,不过在电脑上就不一样了,要
加指令,其他更本就不要变,大家看,红色的代表加进去的指令,其他指令没有变化
.ORG $2000 ;定义程序开始地址为 $2000
.DB "HELLO WORLD" ;定义字符
LDX #$00
LDA #$00
LDY #$00
L1: STA $3000,X ;这里L1就是标号,代表当前指令的地址
CPX #$FF
BEQ L2
INX
JMP L1
L2: RTS ;这里L2也是标号,代表当前指令的地址
看到了吧,多方便啊!
注意: ①标号不能以数字开头
②标号不能为指令码,例如 LDA,LDX等,否则编译器可能误认为是指令
③标号一定要顶格写,否则要发生编译错误