0% found this document useful (0 votes)
559 views2 pages

Instruction PIC 16 PIC 18 ARM

The document compares instructions for MOVE, ADD, SUBTRACT, MULTIPLY, AND/OR/EXOR, BRANCH, CALL AND RETURN, BIT MANIPULATION, and CONDITIONAL SKIP operations between PIC, PIC18, and ARM microcontroller architectures. It lists the specific instructions used and any differences in functionality between the architectures.

Uploaded by

Varun Bhanoo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
559 views2 pages

Instruction PIC 16 PIC 18 ARM

The document compares instructions for MOVE, ADD, SUBTRACT, MULTIPLY, AND/OR/EXOR, BRANCH, CALL AND RETURN, BIT MANIPULATION, and CONDITIONAL SKIP operations between PIC, PIC18, and ARM microcontroller architectures. It lists the specific instructions used and any differences in functionality between the architectures.

Uploaded by

Varun Bhanoo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

INSTRUCTION PIC 16 PIC 18 ARM

MOVE MOVWF f MOVWF f, A MOV R0, R1


MOVLW k MOVLW k //no A MOV R0, #k
MOVF f, d MOVF f, d, A
MOVFF fs, fd //no A
MVN R0,R1

ADD ADDWF f, d ADDWF f, d, A ADD R0, R1, R2


ADDLW k ADDLW k //no A ADC R0, R1, R2
ADDWFC f, d, A

SUBTRACT SUBWF f, d SUBWF f, d, A SUB R0, R1, R2


SUBLW k SUBLW k //no A SBC R0, R1, R2
SUBWFC f, d, A RSB R0, R1, R2
RSC R0, R1, R2
Note: In PIC,
SUBLW = W  k-W ; SUBWF = d(?)  f-W
Note: In ARM, there is inverted carry,
SUB = R0 R1 – R2, ; RSB = R0  R2-R1

MULTIPLY XXXXXXXXXXXXX MULWF f, A MUL R0, R1, R2


MULLW k //no A MLA R0, R1, R2, R3
UMULL R0, R1, R2, R3
SMULL R0, R1, R2, R3
UMLAL R0, R1, R2, R3
SMLAL R0, R1, R2, R3
IN PIC, {PRODH, PRODL}  MULTIPLICATION RESULT

IN ARM, MUL = R0  R1 * R2 (FOR BOTH SIGNED AND UNSIGNED NUMBERS)


MLA = R0  (R1 * R2) + R3
UMULL = {R1, R0}  R2 * R3 (FOR UNSIGNED NUMBERS)
SMULL = {R1, R0}  R2 * R3 (FOR SIGNED NUMBERS)
UMLAL = {R1, R0}  (R2 * R3) + {R1, R0} (FOR UNSIGNED NUMBERS)
SMLAL = {R1, R0}  (R2 * R3) + {R1, R0} (FOR SIGNED NUMBERS)

AND/OR/EXOR ANDWF f, d ANDWF f, d, A AND R0, R1, R2


ANDLW k ANDLW k
OR = IOR OR = IOR OR = ORR
EXOR = XOR EXOR = XOR EXOR = EOR
IN ARM,
BIC R0, R1, R2 R0  R1. (R2)’ DO NOT AFFECT FLAGS (ADD ‘S’, IF NEEDED)
CMP R0, R1 PERFORMS R0-R1; AFFECT FLAGS ONLY
CMN R0, R1 PERFORMS R0+R1; AFFECT FLAGS ONLY
TST R0, R1 PERFORMS R0 AND R1; AFFECT FLAGS ONLY
TEQ R0, R1 PERFORMS R0 XOR R1; AFFECT FLAGS ONLY

INCREMENT INCF f, d INCF f, d, A XXXXXXXXXXXXXXXXXXXXXXXXXXXX


DECREMENT DECF f, d DECF f, d, A XXXXXXXXXXXXXXXXXXXXXXXXXXXX
1’s COMPLEMENT COMF f, d COMF f, d, A XXXXXXXXXXXXXXXXXXXXXXXXXXXX
2’s COMPLEMENT XXXXXXXXXXXXX NEGF f, d, A XXXXXXXXXXXXXXXXXXXXXXXXXXXX
DAW XXXXXXXXXXXXX DAW XXXXXXXXXXXXXXXXXXXXXXXXXXXX
CLEAR CLRW XXXXXXXXXXXXXXXXXXXXXXXXXXXX
CLRF f CLRF f, A
SWAP SWAPF f, d SWAPF f, d, A XXXXXXXXXXXXXXXXXXXXXXXXXXXX
CONDITIONAL BRANCH
BRANCH IF CARRY XXXXXXXXXXXXX BC n BCS n
BNC n BCC n
BRANCH IF ZERO XXXXXXXXXXXXX BZ n BEQ n
BNZ n BNE n
BRANCH IF XXXXXXXXXXXXX BOV n BVS n
OVERFLOW BNOV n BVC n
BRANCH IF NEGATIVE XXXXXXXXXXXXX BN n BMI n
BNN n BPL n
BRANCH IF HIGHER C.(~Z) BHI n
BRANCH IF HIGHER OR BHS n
SAME
BRANCH IF LOWER BLO n
BRANCH IF LOWER OR (~C).Z BLS n
SAME
BRANCH IF GREATER (~Z) AND [---------------] BGT n
BRANCH IF GREATER (NV) OR [(~N).(~V)] BGE n
OR EQUAL
BRANCH IF LESS [N(~V)] OR [(~N)V] BLT n
BRANCH IF LESS OR BLE n
EQUAL
UNCONDITIONAL BRANCH
BRANCH ALWAYS GOTO n BRA n Bn
GOTO n BAL n
BRANCH NEVER NOP NOP BNV n
NOP
CALL AND RETURN
CALL CALL k CALL k BL n
RCALL k
RETURN RETURN (subroutine) RETURN (subroutine) B return
RETLW k (subroutine) RETLW k (subroutine)
RETFIE (ISR) RETFIE (ISR)
BIT INSTRUCTIONS
ROTATE LEFT RLF f, d RLCF f, d, A LSL #N
THROUGH CARRY LSR #N
ROTATE RIGHT RRF f, d RRCF f, d, A ASR #N
THROUGH CARRY ROR #N (ROTATE WITH CARRY)
ROTATE LEFT XXXXXXXXXXXXX RLNCF f, d, A REST WITHOUT CARRY
WITHOUT CARRY
ROTATE RIGHT XXXXXXXXXXXXX RRNCF f, d, A
WITHOUT CARRY
BIT SET BSF F, B BSF F, B, A XXXXXXXXXXXXXXXXXXXXXXXXXX
BIT CLEAR BCF F, B BCF F, B, A XXXXXXXXXXXXXXXXXXXXXXXXXX
BIT TEST SKIP IF CLEAR BTFSC F, B BTFSC F, B, A XXXXXXXXXXXXXXXXXXXXXXXXXX
BIT TEST SKIP IF SET BTFSS F, B BTFSS F, B, A XXXXXXXXXXXXXXXXXXXXXXXXXX
BIT TOGGLE XXXXXXXXXXXX BTG F, B, A XXXXXXXXXXXXXXXXXXXXXXXXXX

INCREMENT F, SKIP IF INCFSZ F,D INCFSZ F,D XXXXXXXXXXXXXXXXXXXXXXXXXX


F=0 INCFSNZ F,D (F ≠ 0)
DECREMENT F, SKIP IF DECFSZ F,D DECFSZ F,D XXXXXXXXXXXXXXXXXXXXXXXXXX
F=0 DECFSNZ F,D (F ≠ 0)

SKIP IF F=W XXXXXXXXXXX CPFSEQ F, A XXXXXXXXXXXXXXXXXXXXXXXXXX


SKIP IF F>W XXXXXXXXXXX CPFSGT F, A XXXXXXXXXXXXXXXXXXXXXXXXXX
SKIP IF F<W XXXXXXXXXXX CPFSLT F, A XXXXXXXXXXXXXXXXXXXXXXXXXX
SKIP IF F=0 XXXXXXXXXXX TSTFSZ F, A XXXXXXXXXXXXXXXXXXXXXXXXXX

You might also like