\prog;16F870M.asi| \macro;Liées au processeur| .Macro Bank0 Clr Status:#RP0 Clr Status:#RP1 .endmacro .Macro Bank2to0 Clr Status:#RP1 .endmacro .Macro Bank1to0 Clr Status:#RP0 .endmacro .Macro Bank1 Set Status:#RP0 Clr Status:#RP1 .endmacro .Macro Bank0to1 Set Status:#RP0 .endmacro .Macro Bank3to1 Clr Status:#RP1 .endmacro .Macro Bank2 Clr Status:#RP0 Set Status:#RP1 .endmacro .Macro Bank3to2 Clr Status:#RP0 .endmacro .Macro Bank0to2 Set Status:#RP1 .endmacro .Macro Bank3 Set Status:#RP0 Set Status:#RP1 .endmacro .Macro Bank2to3 Set Status:#RP0 .endmacro .Macro Bank1to3 Set Status:#RP1 .endmacro ; La macro TooLong? se met à la fin du programme .Macro TooLong? .APC Var .If APC .HS. FinVar Arf, too many variables .Endif .APC Code .If APC .HS. FinProg Arf, program too long .Endif .Endmacro ; La macro Setpage se met avant la préparation de l'instuction Add W,PCL ; Si le début de la table n'et pas en page 0, elle ajoute les 2 instructions ; (modifie W) qui prépare la page. .Macro SetPage Move #APC/256,W Move W,PCLatH .Endmacro ;Les instructions ; .If (APC/256) .NE. (debut zone/256) ; .Error Aie, ce module traverse la page ; .Endif ; se mettent à la fin de la table de saut, en se référant ; à une étiquette avant l'instruction Add W,PCL ; Elle garantissent qu'il n'y a pas passage de frontière de page. ; Un macro ne peut pas être définie (bug de l'assembleur) .End