Gli pseudo-opcodes di MPASM
MPASM , vera comodità per il programmatore, accetta numerosi pseudo opcodes
quando si sta scrivendo un listato per i PIC a 12/14 bits.
Il problema è che questi pseudo opcodes non vanno più bene quando si passa
agli enhanced, anche perchè molti dei loro nomi sono gli stessi di quelli di
istruzioni del set e per gli altri l' Assembler dichiara un errore.
Occorre quindi rimuoverli e sostituirli con le equivalenti istruzioni
enhanced. La tabella seguente da una idea della situazione.
12-Bit/14-Bit MPASM PSEUDO OPCODES
|
16-BIT+ OPCODES |
Pseudo opcode
|
Descrizione
|
Operazione Eseguita |
Status
|
Opcode sostitutivo
|
Status |
Note |
ADDCF f,d
|
Add Carry to File
|
BTFSC STATUS,C
INCF f,d
|
Z
|
|
|
3 |
ADDDCF f,d
|
Add Digit Carry to File
|
BTFSC STATUS,DC
INCF f,d
|
Z
|
|
|
3 |
B k
|
Branch always
|
GOTO k
|
-
|
bra
|
- |
1 |
BC k
|
Branch on Carry
(set)
|
BTFSC STATUS,C
GOTO k
|
-
|
bc
|
- |
2 |
BDC k
|
Branch on Digit Carry
|
BTFSC STATUS,DC
GOTO k
|
-
|
|
|
|
BNC k
|
Branch on No Carry (clear)
|
BTFSS STATUS,C
GOTO k
|
-
|
bnc
|
|
2 |
BNDC k
|
Branch on No Digit Carry
|
BTFSS STATUS, DC
GOTO k
|
-
|
btfss
STATUS, DC
goto k
|
|
1, 3 |
BNZ k
|
Branch on No Zero
|
BTFSS STATUS,Z
GOTO k
|
-
|
bnz
|
|
2 |
BZ k
|
Branch on Zero
|
BTFSC STATUS,Z
GOTO k
|
-
|
bz
|
|
2 |
CLRC
|
Clear Carry
|
BCF STATUS.C
|
-
|
bcf
STATUS.C |
|
3 |
CLRDC
|
Clear Digit Carry
|
BCF
STATUS, DC
|
-
|
bcf
STATUS.DC |
|
3 |
CLRZ
|
Clear Zero
|
BCF
|
3,2
|
-
|
bcf
STATUS.Z |
|
3 |
LCALL k
|
Long Call
|
BCF/BSF 0x0A,3
BCF/BSF 0x0A,4
CALL
k
|
|
call
|
|
|
LGOTO k
|
Long GOTO
|
BCF/BSF
0x0A,3
BCF/BSF
0x0A,4
GOTO k
|
|
goto
|
|
1 |
MOVFW f
|
Move File to W
|
MOVF
f,0
|
Z
|
|
|
|
NEGF f,d
|
Negate File
|
COMF f,1
INCF f,d
|
Z
|
negf |
|
|
SETC
|
Set Carry
|
BSF 3,0
|
-
|
bsf STATUS,C |
|
|
SETDC
|
Set Digit Carry
|
BSF 3,1
|
-
|
bsf STATUS,DC |
|
|
SETZ
|
Set Zero
|
BSF 3,2
|
-
|
bsf STATUS,Z |
|
|
SKPC
|
Skip on Carry
|
BTFSS 3,0
|
-
|
btfss
STATUS.C |
|
3 |
SKPDC
|
Skip on Digit Carry
|
BTFSS 3,1
|
-
|
btfss
STATUS.DC |
|
3 |
SKPNC
|
Skip on No Carry
|
BTFSC 3,0
|
-
|
btfsc
STATUS.C |
|
3 |
SKPNDC
|
Skip on No Digit Carry
|
BTFSC 3,1
|
-
|
btfsc
STATUS.DC |
|
3 |
SKPNZ
|
Skip on Non Zero
|
BTFSC 3,2
|
-
|
btfsc
STATUS.Z |
|
3 |
SKPZ
|
Skip on Zero
|
BTFSS 3,2
|
-
|
btfss
STATUS.Z |
|
3 |
SUBCF f,d
|
Subtract Carry from File
|
BTFSC 3,0
DECF f,d
|
Z
|
|
|
3 |
SUBDCF f,d
|
Subtract Digit Carry from File
|
BTFSC 3,1
DECF f,d
|
Z
|
|
|
3 |
TSTF f
|
Test File
|
MOVF f,1
|
Z
|
|
|
3 |
Note :
-
goto indirizza
un' area di 2 M, bra
un' area di 1K
-
i branch bc,
bnc,
ecc. indirizzano fino a 1K
|
Azione
La soluzione ideale è eliminare gli pseudo opcodes
usati per i PIC16 e sostituirli con altre istruzioni adeguate o trasformarli in
macro.
|
|