Programme assembleur incompris

blackearth Messages postés 11 Statut Membre -  
blackearth Messages postés 11 Statut Membre -
Bonjour,
j'ai cette partie d'un programme en assembleur que je n'arrive pas à comprendre son fonctionnement ainsi que la fonction qu'il réalise:

COMMAND equ 0X8 ;data mapped in receive buffer
;**********************************************
;test the command field and sub-command.
CheckCommand
movf COMMAND,W; test for a valid command
sublw d'7'
bnc Autobaud
clrf PCLATH
incf COMMAND,W ;jump
addwf PCL,F
bra ReadVersion
bra ReadProgMem
bra WriteProgMem
bra EraseProgMem
bra ReadEE
bra WriteEE
bra WriteProgMem ;ReadConfig
bra WriteConfig
;**********************************************

merci pour toute aide!
A voir également:

3 réponses

le père
 
Bonjour

Cette fonction réalise un "saut calculé"
Dans un premier temps, elle vérifie que la variable COMMAND est bien comprise entre 0 et 7. Si ce n'est pas le cas, on saute à l'étiquette Autobaud qui est ailleurs
Si COMMAND est bien entre 0 et 7 on le recopie dans W et on l'incrémente par incf COMMAND,W . On a donc un nombre entre 1 et 8 dans W . Je ne comprends pas ce INC, j'utilise souvent cette technique du saut calculé et il faut bien un nombre de 0 à.. et non pas de 1 à .. , mais passons.
Ensuite ce nombre est ajouté au compteur de programme (addwf PCL,F) ce qui a pour effet de sauter à l'instruction qui suit le addwf PCL,F s'il y avait dans W, la suivante s'il y avait 1, la suivante s'il y avait 2 etc...
Au final, comme ces instructions sont des GOTO, on fait des sauts à ReadVersion , ReadProgMem, WriteProgMem, etc... en fonction du code qu'il y avait au départ dans COMMAND

Ce que je ne comprends pas (je me répète), c'est ce INCF COMMAND,W. À mon avis, ce devrait être MOVF COMMAND,W sinon la commande ReadVersion n'est jamais appelée
0
HANO Messages postés 2 Statut Membre
 
merci infiniment mon ami vous m'avez rendu un grand service
0
blackearth Messages postés 11 Statut Membre
 
merci bien!
0