2012-01-09 4 views
0

두 코드가 같은 의미입니까?어셈블러에서 C로 변환 INCF 및 CPFSLT

Assambler은 -

_asm 
    INCF PR4,0,ACCESS 
    CPFSLT TMR4,ACCESS 
_endasm 

은 C> ->

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

하지 않으면 어떻게 assambler 코드를 번역해야 하는가?

종류는

+2

어떤 CPU/아키텍처입니까? –

+0

마이크로 칩의 PIC18F87J50 컴파일러 C18 – Christian

답변

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의 F, D) (증분 F) (F + 1 -> D) "단위 PR4 등록"환언 ACCESS에서 작업 레지스터 (어큐뮬레이터) " 얻기 가

WREG = PR +1; 

CPFSLT TMR4, ACCESS // (CPFSLT의 F) (만약 < W f를 건너 FW)을 (만약 <w f를 건너 승/F)와 비교 WREG

에 PR +1 비교 TMR4 < WREG

=> TMR4 인 경우 건너 뛰기 < WREG => if TMR4> = WREG

은 부여해야 :

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

음을 ... 맞죠?