用于PIC18F汇编程序的循环

时间:2016-05-24 17:25:28

标签: assembly pic

我有这段代码,我想计算完成for cycle需要多少条指令

while(1)
{
  // some instructions

  for (int i = 0; i < 107; i++)
  {
        // some code
        LATEbits.LATE2 = 1;
  }
  // other instructions
}

这是反汇编列表

... some instructions
109:                   for (int i = 0; i < 107; i++)
654E  0E00     MOVLW 0x0
6550  0100     MOVLB 0x0
6552  6FD8     MOVWF 0xD8, BANKED
6554  0E00     MOVLW 0x0
6556  6FD7     MOVWF i, BANKED
6558  0100     MOVLB 0x0
655A  BFD8     BTFSC 0xD8, 7, BANKED
655C  D008     BRA 0x656E
655E  0100     MOVLB 0x0
6560  51D8     MOVF 0xD8, W, BANKED
6562  E10A     BNZ 0x6578
6564  0E6B     MOVLW 0x6B
6566  0100     MOVLB 0x0
6568  5DD7     SUBWF i, W, BANKED
656A  B0D8     BTFSC STATUS, 0, ACCESS
656C  D005     BRA 0x6578
6570  0100     MOVLB 0x0
6572  4BD7     INFSNZ i, F, BANKED
6574  2BD8     INCF 0xD8, F, BANKED
6576  D7F0     BRA 0x6558
110:                   {
111:                       LATEbits.LATE2 = 1;
656E  848D     BSF LATE, 2, ACCESS
112:                       
113:                   }  
... other instructions 

我的理解是,在第一个周期执行从0x654E0x655C的指令。在0x655C,有一个无条件分支,将我置于for cycle 0x656E。在完成该指令后,如果没有其他分支BRA将代码放回循环的开头,代码如何保持循环?

0 个答案:

没有答案