; ASRA / ASRX ; Décalage arithmétique à droite du registre A / X. ; ; ASRA: code instruction: 0001111r, soit 00011110 (r:0 (registre A)) hexa:1E ; ASRX: code instruction: 0001111r, soit 00011111 (r:1 (registre X)) hexa:1F ; ; lors du décalage vers la droite, le bit de droite est copié dans le témoin C ; et le bit de signe (0-positif,1-négatif) est inséré à gauche ; LDA 8,i ; A=0008 (0000 0000 0000 1000) (8 en décimal) ; ASRA ; A=0004 (0000 0000 0000 0100),(4 en décimal) témoins:N=0,Z=0,V=?,C=0 (bit perdu -> C) ; ; divise le nombre par 2 ; ; le bit de signe est conservé ASRA ; A=0002 (0000 0000 0000 0010),(2 en décimal) témoins:N=0,Z=0,V=?,C=0 (bit perdu -> C) ; ; divise le nombre par 4 ASRA ; A=0001 (0000 0000 0000 0001),(1 en décimal) témoins:N=0,Z=0,V=?,C=0 (bit perdu -> C) ; ; divise le nombre par 8 ASRA ; A=0000 (0000 0000 0000 0000),(0 en décimal) témoins:N=0,Z=1,V=?,C=1 (bit perdu -> C) ; ; multiplie le nombre par 16 ; ; LDX mot,d ; X=CAFE (1100 1010 1111 1110) "mot"=CAFE ; ASRX ; X=E57F (1110 0101 0111 1111) témoins:N=1,Z=0,V=?,C=0 (bit perdu -> C) ; ; le bit de signe est conservé ASRX ; X=F2BF (1111 0010 1011 1111) témoins:N=1,Z=0,V=?,C=1 (bit perdu -> C) ; ASRX ; X=F95F (1111 1001 0101 1111) témoins:N=1,Z=0,V=?,C=1 (bit perdu -> C) ; ASRX ; X=FCAF (1111 1100 1010 1111) témoins:N=1,Z=0,V=?,C=1 (bit perdu -> C) ; ; CAFE -> FCAF, décalage de 4 bits vers la droite ; ; ANDX 0x0FFF,i ; X=0CAF, pour conserver uniquement les 3 dernières positions ; ; CAFE -> AFE0, décalage de 4 bits ; ; Est-ce un nombre impair ? ; LDX mot,d ; X=CAFE (-13570 en décimal) ASRX ; témoins:N=1,Z=0,V=?,C=0 (bit perdu -> C) BRC impair ; non car le bit perdu est un 0 (C=0) ; l le nombre est pair ; ; Seuls les TEMOINS N, Z et C sont affectés. ; ; le TEMOIN V n'est pas modifié car il ne peut pas y avoir de débordement. ; le TEMOIN C contient le bit perdu lors du décalage. ; impair: NOP0 STOP mot: .WORD 0xCAFE ; hexa: CAFE .END