les calculs binaires, c'est ultra puissant en asm, tu fais plein de trucs avec, les routines de multiplications/divisions qui se respectent les utilisent, et plein d'autres aussi

Seul truc, ça nécessite de réflechir en binaire ou hexadécimal, et non en décimal (en décimal, les or, and, xor, etc ne sont quasiment d'aucune utilité)
imagine par exemple que tu as un nombre à virgule FIXE dans a : les 5 premiers bits sont la partie entière et les 3 derniers la partie décimale
la partie entière est comprise entre 0 et 31, et la partie à virgule entre 0 et 7 (un nombre à vigule fixe est strictement la même chose qu'un nombre entier, sauf qu'on décide juste que les X derniers bits sont la virgule, et les autres sont la partie entière)
Donc tu as ce nombre à virgule fixe, et tu as besoin pour un calcul de ne garder QUE la partie entière ou QUE la partie décimale
garder la partie décimale:
;le nombre est dans a
and %00000111
; le fait de ANDer a avec 00000111 va mettre forcément dans le résultat 0 pour les 5 premiers bits, et laisser les 3 derniers bits tels quels
garder la partie entière:
and %11111000
;ici, c'est le contraire, on garde les 5 premiers bits et on met 0 aux autres
si on veut ensuite utiliser cette partie entière pour des calculs avec d'autres nombres entiers (sans virgule fixe), il faut décaler les 5 bits de la partie entière de 3 bits:
sra a
sra a
sra a
et voilà
pour or, par exemple, c'est utilisé pour les sprites, si on veut que les sprites se superposent avec le graphbuffer (en fait, les pixels blanc de la sprite (0) pernnent la valeur du graphbuffer, et les pixels noirs (1) se mettent en noir sur le graph)
pour le xor, ça sert aussi pour les sprites...
Ces instructions permettent aussi des petites optimisations:
or a <=> cp 0 ;mais c'est plus rapide et plus petit
xor a <=> ld a,0 ;idem