Académique Documents
Professionnel Documents
Culture Documents
Le jeu d’instruction
Chapitre 4- Cours microcontrôleur
1
Transformation d’un programme en
Assembleur en langage machine
• Programme simple
2
La structure d’une instruction
Groupes d’instructions
1- Opérations orientés octets:
• f représente la désignation d’un registre SFR et permet de spécifier le
registre qui sera utilisé par l’instruction.
6
Diapositive 6
7
Groupes d’instructions
3. Opérations littérale et de contrôle :
• K représente une constante sur 8 ou 11 bits ou une valeur littérale.
15
EXERCICES- A compléter
• Transformer en binaire quelques instructions assembleurs
• Désassembler un programme binaire en donnant son équivalent
16
@ENICarthage - Cours Microcontroleur
Instructions de transfert de
données
17
Instructions de transfert de données
Mnémonique Opération Bits affectés Cycles
movf f,d f => d Z 1
21
Instruction: movlw k
movwf : Copie le contenu de W dans f sans modifier les flags du registre
STATUS.
movf REG1, W
movwf TEMP
movf REG2, W
movwf REG1
movf TEMP, W
movwf REG2
25
Instructions arithmétiques et logiques
Arithmétique
27
Registre STATUS
28
Registre STATUS
29
Instructions arithmétiques et
logiques
• Instructions arithmétiques :
• Addition : addwf, addlw
30
L’instruction « INCF » (INCrement File)
• Cette instruction provoque l’incrémentation de l’emplacement
spécifié (appelé File).
31
Exemple : addwf
Exemple 1
movlw 253 ;charger 253 en décimal dans W
Exemple 2
movlw 12 ; charger 12 dans W
movwf mavariable ; mavariable vaut maintenant 12
movlw 25 ; charger 25 dans W
addwf mavariable,f ; résultat : (W) + (mavariable), donc
25+12; résultat = 37 sauvé dans
mavariable (f).
32
Exemple : addwf
Exemple 1
movlw .253 ;charger 253 en décimal dans W
Exemple 2
movlw .12 ; charger 12 dans W
movwf mavariable ; mavariable vaut maintenant 12
movlw .25 ; charger 25 dans W
addwf mavariable,f ; résultat : (W) + (mavariable), donc
25+12; résultat = 37 sauvé dans
mavariable (f).
33
Instructions addwf et addlw
37
Exemple : andwf, andlw
Exemple 1:
movlw 0b11001101 ; charger w
andlw 0b11110000 ; effectuer un ‘and’ (&)
38
Exemple : andwf, andlw
Exemple 1:
movlw b’11001101’ ; charger w
andlw b’11110000’ ; effectuer un ‘and’ (&)
39
RLF & RRF
40
RLF & RRF
SWAPF f,d
Instruction
44
Exemple :
addlw 1
Decrement W:
addlw 0xff
45
Exemple :
addlw 1
Decrement W:
addlw 0xff
46
Instruction: swapf reg,d
47
Instruction comf reg,d
d= reg xor 0xFF
50
bcf Register, Bit
Register = Register & (0x0FF ^ (1 << Bit))
52
bsf Register, Bit
Register = Register | (1 << Bit)
53
Adressage des Banques
54
Saut conditionnel: btfsc et btfss
• Tout saut conditionnel en PIC est un saut d’une seule instruction
réalisé par l’une des instructions suivantes:
• BTFSC: Bit Test File and Skip if Clear. Teste l’état du bit et sauter
a ==b 1 1
a >b 0 0
a<b 0 1
56
Exemple de test utilisant
btfss et btfsc
if (a == b) {
// Instructions to execute if “a” equals “b”
}
movf a, w ; “if (a != b) then goto ANotEqualb
subwf b, w
btfss STATUS, Z
goto aNotEqualb
// Instructions that execute if “a” equals “b”
goto ConditionEnd
aNotEqualb:
// Instructions that execute if “a” does NOT equal “b”
ConditionEnd:
57
Instructions équivalentes en 80x86
59
@ENICarthage - Cours Microcontroleur
Autres Instructions au besoin dans
leurs chapitres relatifs
60