Programme assembleur incompris
blackearth
Messages postés
11
Statut
Membre
-
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!
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:
- Programme assembleur incompris
- Programme demarrage windows - Guide
- Programme word gratuit - Guide
- Message programmé - Guide
- Mettre en veille un programme - Guide
- Desinstaller un programme - Guide
3 réponses
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
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