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!
Configuration: Windows XP
Firefox 3.0.10

3 réponses

  1. 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
  2. HANO Messages postés 2 Statut Membre
     
    merci infiniment mon ami vous m'avez rendu un grand service
    0
  3. blackearth Messages postés 11 Statut Membre
     
    merci bien!
    0