看别人的单片机汇编程序,有一些不解,问题如下:
Do_Step:
mova,PowerSetp ;PowerSetp初值为0,a=0
cmprsa,#0 ;比较指令,a与0比较,当a与0相等,则跳过下一条指令
jmp$+2 ;当a不等于0,跳过上一条,执行该条,PC值加2,跳过下一 条
jmpStep_0 ;a=0,跳过上一条,执行该条,即开机时,跳至Step_0,一 档
cmprsa,#1 ;a值没有变化,a=0不等于1,比较指令,不相等则不跳过, 执行下一条指令;当a=1,则到Step_1档,以下同。
jmp$+2 ;PC值加2,跳过下一条
jmpStep_1
cmprsa,#2
jmp$+2
jmpStep_2
cmprsa,#3
jmp$+2
jmpStep_3
cmprsa,#4
jmp$+2
jmpStep_4
cmprsa,#5
jmpExit_Do_Step
jmpStep_5
Exit_Do_Step: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Exit_Do_Step标号后面是空白的,那么jmp Exit_Do_Step 之后,程序会跳到哪里执行呢?
Do_Step:
mova,PowerSetp ;PowerSetp初值为0,a=0
cmprsa,#0 ;比较指令,a与0比较,当a与0相等,则跳过下一条指令
jmp$+2 ;当a不等于0,跳过上一条,执行该条,PC值加2,跳过下一 条
jmpStep_0 ;a=0,跳过上一条,执行该条,即开机时,跳至Step_0,一 档
cmprsa,#1 ;a值没有变化,a=0不等于1,比较指令,不相等则不跳过, 执行下一条指令;当a=1,则到Step_1档,以下同。
jmp$+2 ;PC值加2,跳过下一条
jmpStep_1
cmprsa,#2
jmp$+2
jmpStep_2
cmprsa,#3
jmp$+2
jmpStep_3
cmprsa,#4
jmp$+2
jmpStep_4
cmprsa,#5
jmpExit_Do_Step
jmpStep_5
Exit_Do_Step: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Exit_Do_Step标号后面是空白的,那么jmp Exit_Do_Step 之后,程序会跳到哪里执行呢?