这是我第一次尝试编译程序集时,我无法弄清楚下面的代码有什么问题,因为它无法正常工作。
include "P16F877.INC"
STATUS equ 03h
TRISB equ 86h
PORTB equ 06h
COUNT1 equ 20h
COUNT2 equ 21h
bsf STATUS,5
bcf TRISB,0
bcf STATUS,5
Start bsf PORTB,0
Loop1 decfsz COUNT1,1
goto Loop1
decfsz COUNT1,1
goto Loop1
bcf PORTB,0
Loop2 decfsz COUNT2,1
goto Loop2
decfsz COUNT2,1
goto Loop2
goto Start
end
答案 0 :(得分:0)
问题出现在双循环中:
Loop1 decfsz COUNT1,1
goto Loop1
decfsz COUNT1,1
goto Loop1
当COUNT1为零时,跳过第一个goto。但接着你进入第二个循环,“重新加载”循环。你在这里有一个无限循环。
我不知道如何初始化COUNT1
,但这并不重要。我会这样做。
Loop1a decfsz COUNT1,1
goto Loop1a
; possibly reload COUNT1 with some value
Loop1b
decfsz COUNT1,1
goto Loop1b
当然,Loop2也是如此。我甚至建议你做一个你调用两次而不是复制/粘贴的子程序。
非常令人惊讶的汇编程序,条件可以跳过下一条指令: