informatique a écrit:bonjour !
que signifie au juste l'opération OR et AND ?
exemple :
OR R12,R1,R3 sachant que les registres contiennent 8 chiffres HEXADECIMAUX !
Merci !!
8 chiffres hexadécimaux, ça veut dire 8*4 chiffres binaires ou bits : 32 bits.
En principe, je pense qu'en assembleur OR(r1,r2) doit être interprété comme or(b1_i,b2_i) sur chacun des 32 bits (i=0 à 31), b1_i, i=0 à 31 étant le i-ième bit de R1 et b2_i, i=0 à 31 étant le i-ième bit de R2. Quant au Or sur deux bits, ça veut dire l'un ou l'autre : la table se réduit à 4 entrées :
or(0,0)=0
or(0,1)=1
or(1,0)=1
or(1,1)=1
En C, il y a deux OR, le OR logique et le OR arithmétique (ou OR bit à bit). Le Or arithmétique est celui que je viens de décrire. Le Or logique agit sur des variable logiques qui sont vraires ou fausses (donc deux valeurs). Le faux est représenté par des 0 (32 zéros), le vrai c'est tout le reste (toute configuration de 32 bits où au moins l'un des bits est égal à 1). La table pour des mots de 32 bits se réduit alors à :
or(faux,faux)=faux
or(faux,vrai)=vrai
or(vrai,faux)=vrai
or(vrai,vrai)=vrai
Malheureusement je ne sais pas de quel assembleur tu parles, alors je ne peux pas être totalement affirmatif. Mais je pense qu'en assembleur, en général, le OR est un OR arithmétique.
Quant au AND, tout ce que j'ai dit s'applique avec une autre table :
AND(0,0)=0
AND(0,1)=0
AND(1,0)=0
AND(1,1)=1
pour le AND arithmétique et :
AND (faux,faux)=faux
AND (faux,vrai)=faux
AND (vrai,faux)=faux
AND (vrai,vrai)=vrai
... pour le AND logique.