• Aucun résultat trouvé

0010 0001

N/A
N/A
Protected

Academic year: 2022

Partager "0010 0001"

Copied!
13
0
0

Texte intégral

(1)

Manipulation des bits

Nous avonsvu omment aéderaux otets,qui est la pluspetite unité adressable.Cepen-

dantlapluspetitequantitéd'informationest lebit.Onararementl'oasiond'yaéder pour

eetuerdesaluls(bienqueelapuisseêtreintéressantpourprogrammerlamultipliation,par

exemple). La manipulation des bits est,par ontre, indispensable en programmation système,

pluspréisémentlorsduontrle des périphériques. En eeton asouventbesoin,dans e as,

deoderdel'information binaire:onpourraitutiliserunotetpourune telleinformationmais

onperdrait alors beauoup d'espae et,surtout,beauoup de tempslors deséhanges aveles

périphériques.On adon intérêt àoderes informations par desbits individuels, e qui per-

met l'utilisation d'un otetau lieu de huit (tout aumoins dansle as optimum). Ilfaut don

pouvoiraéder àhaundes bits individuellementpourela. C'est l'objet des instrutions de

manipulation de bits.

(2)

20.1 Instrutions logiques

20.1.1 Mise en plae

Introdution.-Lesinstrutionslogiquesorrespondentàl'implémentationdeertainsonne-

teurslogiquestelsquelanégation,laonjontionetladisjontion.Un otetpeutêtreonsidéré

ommeunotupletdebits.Lorsd'uneinstrutionlogique,onexéutelamêmeopérationlogique

enparallèlesurhaundeshuitbits,1représentantlevraiet 0lefaux.

Langagesymbolique.-Ilyaquatreinstrutionslogiquesimplémentéessurle8086/8088:lesins-

trutionslogiquesparallèles(oubitàbit)denégationNOT,deonjontionAND,dedisjontion

ORetdedisjontionexlusiveXOR(eXlusive OR):

NOT soure

AND destination, soure

OR destination, soure

XOR destination, soure

Sémantique.-Si,avantl'instrution, leontenudel'aumulateurALest :

1110 0011

et eluiduregistreBLest:

0010 0001

alors,aprèsl'instrution:

AND AL, BL

leontenudel'aumulateurALest:

0010 0001.

Langagemahine.-1

o

)L'instrutionNOTest odéesurdeuxotetspar:

| 1111 011w | mod 010 r/m |

-2

o

)L'instrutionANDpossèdetroisodagesselonlanaturedesopérandes:

a) La onjontion entre mémoire ou registreet mémoire est odée sur deux ou quatre

otetspar:

| 0010 00dw | mod reg r/m | | |

b)Laonjontionimmédiatedansl'aumulateurestodéesurdeuxoutroisotetspar:

| 0010 010w | donnée | donnée si

w = 1

|

)Laonjontionimmédiateaveleontenu d'uneasemémoireouderegistreestodée

surtroisouquatreotetspar:

| 1000 000w | mod 100 r/m | donnée | donnée si

w = 1

|

-3

o

)L'instrutionORpossèdetroisodagesselonlanature desopérandes:

a)Ladisjontionentremémoireouregistreetmémoireestodéesurdeuxouquatreotets

par:

| 0000 10dw | mod reg r/m | | |

b)Ladisjontionimmédiatedansl'aumulateurest odéesurdeuxoutroisotetspar:

w = 1

(3)

)Ladisjontionimmédiate ave leontenu d'uneasemémoireouderegistreest odée

surtroisouquatreotetspar:

| 1000 000w | mod 001 r/m | donnée | donnée si

w = 1

|

-3

o

)L'instrutionXORpossèdetroisodagesselonlanature desopérandes:

a) Ladisjontion exlusive entre mémoireou registreet mémoire est odée surdeux ou

quatreotetspar:

| 0011 00dw | mod reg r/m | | |

b) La disjontion exlusive immédiate dans l'aumulateurest odée sur deux ou trois

otetspar:

| 0011 010w | donnée | donnée si

w = 1

|

)La disjontionexlusiveimmédiateavele ontenu d'uneasemémoireou deregistre

estodéesurtroisouquatreotetspar:

| 1000 000w | mod 110 r/m | donnée | donnée si

w = 1

|

Exemple.- Vérions le résultat del'exemple vu à proposde la sémantique en érivant un pro-

gramme,d'abordenlangagesymbolique:

MOV AX,3000

MOV DS,AX

MOV AL,E3

MOV BL,21

AND AL,BL

MOV [0400℄,AL

RET

puisenlangagemahine:

B8 00 30

8E D8

B0 E3

B3 21

20 D8

A2 00 04 C3

Codonseprogramme:

C:\COM>debug

-E CS:100 B8 00 30

-E CS:103 8E D8

-E CS:105 B0 E3

-E CS:107 B3 21

-E CS:109 20 D8

-E CS:10B A2 00 04

-E CS:10E C3

-R BX

BX 0000

:

-R CX

CX 0000

:F

-N AND.COM

-W

(4)

-Q

Après exéutiondu programme and.om,onvérieque l'on abien 21 =33h à l'emplaement

mémoirehoisi:

C:\COM>debug

-D 3000:400

3000:0400 21 00 03 00 0B 00 00 00-00 00 00 00 00 00 00 00 !...

3000:0410 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0420 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0430 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0440 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0450 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0470 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0470 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

(5)

20.1.2 Appliation des instrutions logiques

20.1.2.1 Masquagesimple

Introdution.- On veut souvent déterminer la valeur d'un ou de plusieurs bits. On pourrait

évidemmentamenerhaundeesbitsàlapremièreposition(grâeauxinstrutionsdedéalage

quenousverronsi-après)ettester.Maiseireprésentebeauoupd'instrutions.Onutilisedon

pluttlatehniquedumasquagequenousallonsdériremaintenant.

Onparledemasquage simplelorsqu'onveutonnaîtrelavaleurd'unseulbit.

Prinipe.-On utilise l'instrutionAND et onregardel'indiateur voulu du registredesindia-

teurs.Parexemple,pourdéterminersile bitsetrouvantàlaposition 3duregistreBLestégal

à1,onplae 0000 1000b,valeurappeléemasque, dansl'aumulateurALet onexéutel'ins-

trutionANDAL,BL.Ilpeutyavoirauplusun1danslerésultat:àlaposition3.Depluson

obtiente1si,etseulementsi,lavaleurdutroisièmebitdeBLestégaleà1.Ainsiletroisième

bitdeBLestégalà1si,et seulementsi,l'indiateurZFestégalà0aprèsette instrution.

20.1.2.2 Masquageettradution

Introdution.-Lemasquagepeutservirpourdéterminerlavaleurd'unbit,ommenousvenons

delevoir.Ilpeutégalementservirdansertainsasàlatradution.

Appliation.- Dans le odage ASCII,les hires `0'à`9' sontodéspar lesvaleurs 30hà39h.

Lorsqu'onréupéreleodeASCIId'unhire,pourobtenirlavaleurnumériqueorrespondante,

il sut donde soustraire30h.Cei peutêtre obtenu parune soustrationmais onpeutaussi

utiliserunetehniquedemasquage.

Supposons en eet que le ode ASCII se trouve dans le registre AL. Plaçons 0Fh, 'est-à-

dire0000 1111bdans leregistreBL. AlorsANDAL,BLdonne lavaleurnumériqueduhire

orrespondant.

20.1.2.3 Masquagemultiple

On peut vouloirtester plusieursbits. On peut le faireun par un. On peut aussi lestester

tousàlafois,maisuniquementpoursavoirs'ilssonttousprésents(avexor)ousiaumoinsl'un

d'euxest présent(aveor).

20.1.2.4 Initialisationà zéro

Onavuommentinitialiserl'aumulateuràzérogrâeàl'instrution:

MOV AX, 0

quisetraduitpartroisotetsenlangagemahine.Pourgagnerdelaplaedansl'espaeréservé

auode,lesprogrammeursutilisentsouventl'astuesuivante:

XOR AX, AX

quiréaliselamêmehosemaisest odésurdeuxotetsenlangagemahine.

20.1.2.5 Test à zéro

Onavuommenttestersil'aumulateurestnulgrâeàl'instrution:

CMP AX, 0

qui setraduitpartrois otetsen langagemahine. Pourlamême raison quei-dessus,les pro-

grammeursutilisentsouvent:

(6)

20.2 Les déalages logiques

Introdution.- Puisqueles miroproesseursmanipulent desnombresen binaire,ils peuventef-

fetuer failementune multipliationou une division pardeux, en déalanttousles bitsd'une

positionàgauhe(éventuellementaveundébordement)ouàdroite(enperdantlepremierbit).

Ceiexpliquel'intérêtdesdéalages.

Les onepteurs du miroproesseur 8080, puis eux du 8086/8088, ont implémenté deux

famillesdedéalages:l'unepourmultiplieretdiviserpardeuxlesentiersnaturels(appelésdé-

alageslogiques)etl'autrepourlesentiersrelatifs(appelésdéalagesarithmétiques).Nous

allonsnousintéresseraupremiertypededéalagesdansette setion.

Langagesymbolique.-1

o

)L'instrution :

SAL soure

(pourl'anglaisShift ArithmetiLeft)ou:

SHL soure

(pourl'anglaisSHiftLeft)déaletouslesbitsd'unregistreoud'uneasemémoired'uneposition

verslagauheet plaeunzéroommebit leplusàdroite, equiéquivautàunemultipliation

pardeux.Lorsqu'ilyadébordement,l'indiateurdedébordementCFestpositionnéàun.L'in-

diateur dedépassement deapaité OFest misà1si lebit depoidsfort(eluide signepour

lesentiers relatifs)esthangé(pertedel'informationdesiggne),sinonilest misà0:

CF

← ← 0

Cedéalageàgauhepeutavoirlieuplusieursfois,lenombredefoisétantleontenudeCL.

2

o

)L'instrution :

SHR soure

(pourl'anglaisSHiftRight)déaletouslesbitsd'unregistreoud'uneasemémoired'uneposition

versladroite et plaeun zérodans le bit leplus àgauhe,e qui équivautàune division par

2non signée.Le bitde droiteest plaé ommeindiateurdedébordementCF. L'indiateurde

dépassementdeapaité OF estmis à1sile bitdepoidsfortest diérentdupréédent(perte

del'informationdesigne),sinon ilestmisà0:

0 → →

CF

Cedéalageàdroitepeutavoirlieu plusieursfois,lenombredefois étantleontenu deCL.

3

o

)L'instrution :

SAR soure

(pour l'anglais Shift Arithmeti Right) déale les 7ou 15 bits de poids faible d'un registreou

d'uneasemémoired'unepositionversladroiteetplaeunzéroommeseptièmeouquinzième

bit, equi équivautàunedivision par2signée. Lebit dedroiteest plaéommeindiateurde

débordementCF.L'indiateurdedépassementdeapaitéOF estmisà0.

(7)

Langagemahine.-1

o

)Ledéalageàgauheest odésurdeuxouquatreotetspar:

| 1100 00vw | mod 100 r/m | | |

ave

v = 0

pourundéalageet

v = 1

pourplusieursdéalagesdontlenombreestontenudans CL(dontlavaleurn'estpasdétruite).

-2

o

)LedéalagelogiqueàdroiteSHRestodésurdeuxouquatreotetspar:

| 1101 00vw | mod 100 r/m | | |

ave

v = 0

pourundéalageet

v = 1

pourplusieursdéalagesdontlenombreestontenudans CL(dontlavaleurn'estpasdétruite).

-3

o

)LedéalagearithmétiqueàdroiteSARestodésurdeuxouquatreotets

par:

| 1101 00vw | mod 111 r/m | | |

ave

v = 0

pourundéalageet

v = 1

pourplusieursdéalagesdontlenombreestontenudans CL(dontlavaleurn'estpasdétruite).

Exemple.- Vérionsqueledéalagelogique àdroitede 8Fh,soit 1000 1111b,donne bien 0100

0111b,soit 47h.Érivonsunprogramme,d'abordenlangagesymbolique:

MOV AX,3000

MOV DS,AX

MOV AL,8F

SHR AL,1

MOV [0400℄,AL

RET

puisenlangagemahine:

B8 00 30

8E D8

B0 8F

D0 E8

A2 00 04

C3

Codonseprogramme:

C:\COM>debug

-E CS:100 B8 00 30

-E CS:103 8E D8

-E CS:105 B0 8F

-E CS:107 D0 E8

-E CS:109 A2 00 04

-E CS:10C C3

-R BX

BX 0000

:

-R CX

CX 0000

:D

-N SHR.COM

-W

Eriture de 0000D otets

(8)

Aprèsexéutionduprogrammeshr.om,onvériequel'onabien47hàl'emplaementmémoire

hoisi:

C:\COM>debug

-D 3000:400

3000:0400 47 00 03 00 0B 00 00 00-00 00 00 00 00 00 00 00 G...

3000:0410 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0420 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0430 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0440 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0450 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0470 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0470 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

-q

(9)

20.3 Les rotations

Lorsqu'on eetue un déalage àgauhede 4 bits, les 4bits les plus àgauhesontperdus

pour un déalage sur un otet (à part l'un d'eux qui peut être réupéré dans l'indiateur de

débordement).Dansertainsas,onneveutpasperdreesbits.Lafamilledesinstrutionsde

rotationpermetderéarrangerlesbitssanslesperdre:lebitquiestexpulséd'untéréapparaît

del'autreté.

Ilexistedeuxtypesderotations:l'uneneonernequel'otetoulemotsurlequelontravaille,

l'autrefaitintervenirl'indiateurderetenue.

20.3.1 Les rotations sur un otet ou un mot

Langagesymbolique.- Les instrutions derotation duontenu d'un registreou d'unease mé-

moiren'aetentque les huit ou seize bits de lasoure, le bit sortant étant envoyé àlafois à

l'autreextrémitéet dansl'indiateur dedébordementCF:

ROL soure, n

ROR soure, n

respetivementpour

n

rotationsàgauhe(pourl'anglaisROtateLeft)etàdroite(pourl'anglais ROtateRight).

Lorsquelenombrede rotationsest1,l'indiateur dedépassementde apaitéOF est signi-

atif: il est misà1si lebit deplusfort poids est hangé('est-à-diresi lesigneest hangé),

sinonilest misà0.

Langagemahine.-1

o

)Larotationàgauheestodéesurdeuxàquatreotets:

| 1101 00vw | mod 000 r/m | | |

ave

v = 0

pour une rotation et

v = 1

pour plusieursrotations,

n

étant alors le ontenu du registreCL(dontlavaleurneserapasdétruite).

-2

o

)Larotationàdroiteest odéesurdeuxàquatreotets:

| 1101 00vw | mod 001 r/m | | |

ave

v = 0

pour une rotation et

v = 1

pour plusieursrotations,

n

étant alors le ontenu du registreCL(dontlavaleurneserapasdétruite).

Exemple.- Vérionsque larotationàdroitede 8Fh,soit 1000 1111b,donne bien 1100 0111b,

soitC7h.Érivonsunprogramme, d'abordenlangagesymbolique:

MOV AX,3000

MOV DS,AX

MOV AL,8F

ROR AL,1

MOV [0400℄,AL

RET

puisenlangagemahine:

B8 00 30

8E D8

B0 8F

D0 C8

A2 00 04

(10)

Codonseprogramme:

C:\COM>debug

-E CS:100 B8 00 30

-E CS:103 8E D8

-E CS:105 B0 8F

-E CS:107 D0 C8

-E CS:109 A2 00 04

-E CS:10C C3

-R BX

BX 0000

:

-R CX

CX 0000

:D

-N ROR.COM

-W

Eriture de 0000D otets

-Q

Aprèsexéutionduprogrammeror.om,onvériequel'onabienC7hàl'emplaementmémoire

hoisi:

C:\COM>debug

-D 3000:400

3000:0400 C7 00 03 00 0B 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0410 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0420 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0430 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0440 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0450 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0470 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0470 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

(11)

20.3.2 Les rotations sur un otet ou un mot et l'indiateur CF

Langagesymbolique.- Dansune rotationsurleontenud'un registreoud'unease mémoireet

l'indiateurCF, lebit expulséd'untéest plaé dansl'indiateur CFet lebit del'indiateur

estplaé danslasouredel'autreté.Ils'agitdond'unerotationsurneufoudix-septbits :

RCL soure, n

RCR soure, n

respetivementpourune rotationàgauhe (pour l'anglais Rotate with Carry Left) et à droite

(pourl'anglaisRotatewithCarry Right).

Lorsquelenombrederotationsest1,l'indiateurdedépassementdeapaitéestsigniatif:

ilestmisà1lorsquelebitdeplusfortpoidshangedevaleur('est-à-diresilesigneesthangé),

sinonilest misàzéro.

Langagemahine.-1

o

)Larotationàgauheestodéesurdeuxàquatreotets:

| 1101 00vw | mod 010 r/m | | |

ave

v = 0

pour une rotation et

v = 1

pour plusieursrotations,

n

étant alors le ontenu du registreCL(dontlavaleurn'estpasdétruite).

-2

o

)Larotationàdroiteest odésurdeuxàquatreotets:

| 1101 00vw | mod 011 r/m | | |

ave

v = 0

pour une rotation et

v = 1

pour plusieursrotations,

n

étant alors le ontenu du registreCL(dontlavaleurn'estpasdétruite).

Exemple.- Sileontenu del'aumulateurALest 0100 0011b,soit43h,et eluidel'indiateur

deretenueCFest0,vérionsquelarotationàdroitedonnebien0010 0001b,soit21h.Érivons

unsous-programme,d'abordenlangagesymbolique:

MOV AX,3000

MOV DS,AX

SUB AL,AL

MOV AL,43

RCR AL,1

MOV [0400℄,AL

RET

puisenlangagemahine:

B8 00 30

8E D8

28 C0

B0 43

D0 D8

A2 00 04

C3

Codonseprogramme:

C:\COM>debug

-E CS:100 B8 00 30

-E CS:103 8E D8

(12)

-E CS:107 B0 43

-E CS:109 D0 D8

-E CS:10B A2 00 04

-E CS:10E C3

-R BX

BX 0000

:

-R CX

CX 0000

:F

-N RCR.COM

-W

Eriture de 0000F otets

-Q

Aprèsexéutionduprogrammerr.om,onvériequel'onabien21hàl'emplaementmémoire

hoisi:

C:\COM>debug

-D 3000:400

3000:0400 21 00 03 00 0B 00 00 00-00 00 00 00 00 00 00 00 !...

3000:0410 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0420 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0430 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0440 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0450 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0470 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

3000:0470 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...

(13)

20.4 Changer l'indiateur de retenue

Comme le bit 0 duregistredes indiateurs, l'indiateur de retenueCF, est souvent utilisé.

Troisinstrutionsluisontonsarées.

Langagesymbolique.-L'instrution:

STC

(pourl'anglaisSeT Carry)plae1dansl'indiateurCF.L'instrution:

CLC

(pourl'anglaisCLearCarry)plae0dansl'indiateurCF.L'instrution:

CMC

(pourCoMplement Carry)inverselavaleurdel'indiateurCF.

Langagemahine.-1

o

)Lepositionnementdel'indiateurCFestodésurunotetpar1111 1001,

soitF9h.

-2

o

)L'annihilationdel'indiateurCFestodéesur unotetpar1111 1000,

soitF8h.

-3

o

)L'inversiondel'indiateurCFestodéesurunotetpar1111 0101,soit

F5h.

20.5 Historique

Le premier ordinateur (EDSAC, 1949; voir hapitre??) n'utilise qu'une seule instrution

logique:leANDsouslaformedel'instrutionollate. Lesinstrutionsdedéalagesontunpeu

ompliquées:poursimplierlamiseenplae matérielle,lenombredepositionsàdéalern'est

pasdonnéeparlavaleurduhampd'adressedel'instrutionmaisparlapositiondubitleplusà

doite;ainsil'instrutionL 8 Sapouronséquenequeleontenude l'aumulateurestdéalé

Références

Documents relatifs

Objectifs : savoir que le point d’une droite le plus proche d’un point donné est le pied de la perpendiculaire menée du point à la droite..  activité 1 : Distribuer un

Elle est d’autant plus importante que la masse de la charge est grande et s’oppose à la mise en mouvement. Elle est caractérisée par le moment d’inertie J, qui s’exprime en

La tangente en A au cercle est la droite qui coupe ce cercle uniquement en

left : déale vers la droite si positif, vers la gauhe sinon.. right : déale vers la gauhe si positif, vers la

left : déale vers la droite si positif, vers la gauhe sinon. right : déale vers la gauhe si positif, vers la

• Savoir que le point d’une droite le plus proche d’un point donné est le pied de la perpendiculaire menée du point à la droite. 1 Distance d’un point à

Propriété 2 : Si un point situé entre les côtés d’un angle saillant est équidistant des côtés de l’angle, alors il appartient à la bissectrice de cet angle.. MH

Avec cinq graduations intermédiaires au minimum, celui-ci donne 40 configurations possibles qui incluent les deux qui viennent d’être mentionnées.. Pour L variant de 24