//标号

   标号代表该行指令的地址,标号的出现,极大的方便了我们编写程序,我们

从此不再需要记地址了,我举一个例子来说明

   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等,否则编译器可能误认为是指令

          ③标号一定要顶格写,否则要发生编译错误