; ANDA / ANDX ; ET bit à bit du registre A ou X. ; ; ANDA: code instruction: 1001raaa, soit 10010aaa (r:0 (registre A) et aaa:mode d'adressage 000 à 111) hexa:90 à 97 ; ANDX: code instruction: 1001raaa, soit 10011aaa (r:1 (registre X) et aaa:mode d'adressage 000 à 111) hexa:98 à 9F ; ; Rappel: Un ET avec les bits 0 et 0 donne 0 comme résultat. ; Un ET avec les bits 0 et 1 donne 0 comme résultat. ; Un ET avec les bits 1 et 0 donne 0 comme résultat. ; Un ET avec les bits 1 et 1 donne 1 comme résultat. ; ; ANDA valeur,i ; immédiat (fait un ET logique entre l'Accumulateur et la valeur qui se trouve immédiatement dans l'instruction) ; ANDX ETIQUET,d ; déplacement (fait un ET logique entre le registre Accumulateur et les 2 octets se trouvant à ETIQUET) ; LDA 0xABCD,i ; A=ABCD (1010 1011 1100 1101 binaire) ANDA 0x000F,i ; ET avec 0000 0000 0000 1111, A=000D témoins:N=0,Z=0,V=?,C=? ; LDA 0xABCD,i ; A=ABCD (1010 1011 1100 1101 binaire) ANDA 0x00F0,i ; ET avec 0000 0000 1111 0000, A=00C0 témoins:N=0,Z=0,V=?,C=? ; LDA 0xABCD,i ; A=ABCD (1010 1011 1100 1101 binaire) ANDA 0xF000,i ; ET avec 1111 0000 0000 0000, A=A000 témoins:N=1,Z=0,V=?,C=? ; LDX 0xABCD,i ; X=ABCD (1010 1011 1100 1101 binaire) ANDX 0xFF90,i ; ET avec 1111 1111 1001 0000, X=AB80 témoins:N=1,Z=0,V=?,C=? ; ; le nombre est-il impair ? Oui, si le dernier bit du registre est égal à 1 ; LDA 0xABCD,i ; A=ABCD (1010 1011 1100 1101 binaire) ANDA 0x0001,i ; ET avec 0000 0000 0000 0001, A=0001 témoins:N=0,Z=0,V=?,C=? BRNE impair ; oui, on fait le branchement (Z=0) ; LDA 0xABCD,i ; A=ABCD (1010 1011 1100 1101 binaire) ANDA 0x0003,i ; ET avec 0000 0000 0000 0011, A=0001 témoins:N=0,Z=0,V=?,C=? ; LDA 0xABCD,i ; A=ABCD (1010 1011 1100 1101 binaire) ANDA 0xA000,i ; ET avec 1010 0000 0000 0000, A=A000 témoins:N=1,Z=0,V=?,C=? ; LDX 0xABCD,i ; X=ABCD (1010 1011 1100 1101 binaire) ANDX 0x5030,i ; ET avec 0101 0000 0011 0000, X=0000 témoins:N=0,Z=1,V=?,C=? ; LDX 0xABCD,i ; X=ABCD (1010 1011 1100 1101 binaire) ANDX mot,d ; ET avec 0000 0010 0001 1100, X=020C "mot"=021C témoins:N=0,Z=0,V=?,C=? ; ; erreur d'utilisation "ne causant pas d'invalidité" ; LDA 0xABCD,i ; A=ABCD (1010 1011 1100 1101 binaire) ANDA octet,d ; fait le ET avec un octet de "octet" suivi du premier octet de "mot", soit avec 0502. ; ; ET avec 0000 0101 0000 0010, A=0100 témoins:N=0,Z=0,V=?,C=? ; ; ET avec un seul octet "octet" avec le registre A ; LDA 0xABCD,i ; A=ABCD (1010 1011 1100 1101 binaire) LDX 0,i ; X=0000 initialise l'index à zéro. LDBYTEX octet,d ; X=0005 charge "octet"=05 dans la partie droite du registre indeX. STX tampon,d ; range dans un word ANDA tampon,d ; ET avec 0000 0000 0000 0101, A=0005 témoins:N=0,Z=0,V=?,C=? ; ; ; les TEMOINS N et Z sont TOUJOURS affectés après le ET logique ; les TEMOINS V et C conservent leurs valeurs ; ; Si le résultat du ET logique est: ; ; N:négativité N=0 (<=0) N=1 (>0) ; ; Z:zéro Z=0 (<>0) Z=1 (=0) ; impair: NOP0 ; usage futur STOP octet: .BYTE 5 ; hexa: 05 mot: .WORD 540 ; hexa: 021C tampon: .BLOCK 2 ; #2h .END