2012-01-09 169 views
0

這兩個代碼意思一樣嗎?彙編語言到C語言轉換INCF和CPFSLT

Assambler - >

Ç - >

++PR4; 
if (PR4 < TMR4) 
    PIR3bits.TMR4IF = 1; 

如果沒有,應該如何assambler代碼翻譯?

親切的問候:)

+2

這是什麼CPU /架構? – 2012-01-09 10:44:53

+0

它是微芯片的PIC18F87J50編譯器C18 – Christian 2012-01-09 11:01:17

回答

0

其他人可以驗證這一點,我認爲下面的代碼是正確的!

_asm 
    INCF PR4,0,ACCESS //PR4+1 destination WREG, Access bank 
    CPFSLT TMR4,ACCESS //Compare TMR4 with contents of WREG in Access bank, Skip if TMR4 < WREG 
_endasm 
/* Above says: if (TMR4 <= PR4 + 1)*/ 
    PIR3bits.TMR4IF = 1; // Then do this line 
0

第一個答案是否定的,但是我不知道該如何把它翻譯!

INCF PR4,0,ACCESS //(INCF女,d)(f加)(F + 1 - > d) 「遞增PR4寄存器 「工作寄存器(累加器)」 在換句話說ACCESS: 獲取PR 1至WREG

WREG = PR +1; 

CPFSLT TMR4,ACCESS //(CPFSLT F)(比較F/W,則跳過如果f<瓦特)(FW,跳過如果f < W) 比較TMR4 < WREG

=>跳過如果TMR4 < WREG =>如果TMR4> = WREG

應該給:

if (TMR4 >= WREG) 
    WREG = PR4 + 1; 

嗯...對吧?