loada h#45CD,i storea d#-2,s addsp d#-2,i jsr Binout stop ;La fonction Binout: ;Un seul parametre: le nombre à afficher en binaire. ;Cette fonction nettoie la pile et conserve les registres A et X originaux FBINREGX: .EQUATE d#0 FBINREGA: .EQUATE d#2 FBINRET: .EQUATE d#4 NBPARAM: .EQUATE d#6 Binout: addsp d#-4,i storea FBINREGA,s storex FBINREGX,s loada NBPARAM,s loadx d#16,i ;le registre X servira de compteur pour la boucle. ;16 bits à imprimer dans le registre A, donc 16 tours ; de boucle à effectuer fbinrep: asla ;décalage à gauche. le bit de gauche du registre est ; transféré dans le flag de retenue (C) brc retenue ;il y a eu un débordement (C=1)? si oui, on branche à ; "retenue" sinon, on continue. charo c#/0/,i br fbindec ;branchement inconditionnel à "dec" retenue: charo c#/1/,i fbindec: subx d#1,i ;décrémenter notre compteur brne fbinrep ;compteur arrive à zéro (Z=1)? si oui, on continue ;sinon, on branche à "rep" loada FBINRET,s storea NBPARAM,s loada FBINREGA,s loadx FBINREGX,s addsp d#6,i rts .END