Poids fort / poids faible

Contenu du snippet

Cette source s'adresse aux débutants en asm.Il montre simplement comment "extraire" le poids fort et faible d'un WORD et d'un DWORD.
Je l'avais initialement mis en tutoriels mais l'editeur supprime tout retour
à la ligne,ce qui donne un texte illisible.

Source / Exemple :


---------------
WORD (16 BITS)
---------------

ex:   65400=FF78h=1111 1111 0111 1000b

	en mémoire,on a;	offset 0=78h  offset 1=FFh

1: calcul de la valeur décimale des bits 15 à 8

	bit 15=1 binaire=2^15=32768
	bit 14=1 binaire=2^14=16384
	bit 13=1 binaire=2^13=8192
	..
	..
	bit 8=1 binaire=2^8=256

	en additionnant toutes ces valeurs on obtient 65280,c'est le poids fort

2:  calcul de la valeur décimale des bits 7 à 0

	bit 7=0
	bit 6=1=2^6=64
	bit 5=1=2^5=32
	..
	..
	bit 0=0

	on obtient 120,c'est le poids faible

3:   au total,1111 1111 0111 1000b=65280+120=65400

4:   si on a mov ax,FF78h,alors AH contient le poids fort et AL le poids faible et (AH*256)+AL=AX

----------------
DWORD (32 bits)
----------------

ex: 4C60FF78h=0100 1100 0110 0000 1111 1111 0111 1000b

en mémoire on a; offset 0=78h offset 1=FFh offset 2=60h offset 3=4Ch

Pour calculer les valeurs décimales,on considère deux paquets de bits 0 à 15

1:valeur des bits 31 à 16

	bit 31="bit 15"=0
	bit 30="bit 14"=1=2^14=16384
	bit 29="bit 13"=0
	bit 28="bit 12"=0
	bit 27="bit 11"=1=2^11=2048
	bit 26="bit 10"=1=2^10=1024
	...
	...
	bit 22="bit 6"=1=2^6=64
	bit 21="bit 5"=1=2^5=32
	...
	...
	bit 16=0

	total des valeurs décimales=19552=WORD de poids fort

2:valeur des bits 15 à 0;

	bit 15 à bit 0=65400 (c'est la valeur de l'ex WORD précédent)=WORD de poids faible

3:si mov eax,4C60FF78h alors;
	AX contient le word de poids faible
	pour obtenir le WORD de poids fort,il faut déplacer les bits 31 à 16 et les mettre à la place des bits 15 à 0: SHR eax,16 et AX contiendra alors le WORD de poids fort.

	au total;
			EAX=(WORD fort*65536)+WORD faible

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.