8086 Instructions

Preview:

DESCRIPTION

8086 dakchi zin

Citation preview

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 1/59

    Touteslescommandesdu8086

    Index:

    AAAAADAAMAASADCADDANDCALLCBWCLCCLDCLICMCCMP

    CMPSBCMPSWCWDDAADASDECDIVHLTIDIVIMULININCINTINTOIRETJA

    JAEJBJBEJCJCXZJEJGJGEJLJLEJMPJNAJNAEJNB

    JNBEJNCJNEJNGJNGEJNLJNLEJNOJNPJNSJNZJOJPJPE

    JPOJSJZLAHFLDSLEALESLODSBLODSWLOOPLOOPELOOPNELOOPNZLOOPZ

    MOVMOVSBMOVSWMULNEGNOPNOTOROUTPOPPOPAPOPFPUSHPUSHAPUSHFRCL

    RCRREPREPEREPNEREPNZREPZRETRETFROLRORSAHFSALSARSBB

    SCASBSCASWSHLSHRSTCSTDSTISTOSBSTOSWSUBTESTXCHGXLATBXOR

    Typesd'oprande:

    REG:AX,BX,CX,DX,AH,AL,BL,BH,CH,CL,DH,DL,DI,SI,BP,SP.

    SREG:DS,ES,SSetuniquementcommedeuximeoprande:CS.

    mmoire:[BX],[BX+SI+7],variable,etc.(VoirAccsmmoire.)

    valeurimmdiate:5,24,3Fh,10001101b,etc.

    Notes:

    Lorsquedeuxoprandessontncessairespouruneinstructionilssontsparsparunevirgule.Parexemple:

    REG,mmoire

    Lorsquedeuxoprandessontncessaires,lesdeuxoprandesdoiventavoirlammetaille(saufpourlesinstructionsdedcalageetderotation).Parexemple:

    AL,DLDX,AXm1DB?

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 2/59

    AL,m1m2DW?AX,m2

    Quelquesinstructionsadmettentplusieurscombinaisonsd'oprande.Parexemple:

    mmoire,immdiateREG,immdiate

    mmoire,REGREG,SREG

    Quelquesexemplescontiennentdesmacros,ainsiilestrecommandd'utiliserlestouchesderaccourci[Maj]+[F8]pourfaireunpasdeplus(lecodedelamacrodoits'excuteavecladuredupassurzrodemanireobtenirunevitessemaximale)sinon,l'mulateurferaunpaspourchaqueinstructiond'unemacro.VoiciunexemplequiutiliselamacroPRINTN:

    #make_COM#include'emu8086.inc'ORG100hMOVAL,1MOVBL,2PRINTN'Bonjourtoutlemonde!'macro.MOVCL,3PRINTN'Bienvenue!'macro.RET

    Cesrepressontutilisspourindiquerl'tatdesflags:

    1Instructionquiplaceleflag1.0Instructionquiplaceleflag0.rLavaleurduflagdpenddursultatdel'instruction.?Lavaleurduflagn'estpasdfinie(peuttre1ou0).

    Quelquesinstructionsproduisentexactementlemmecodemachineetdecefait,ledsassembleurpeutavoirquelquesproblmespourdcodervotrecoded'origine.C'estparticulirementimportantpourlesinstructionsdesautsconditionnels(voir"Contrlededroulementduprogramme"dansledidacticielpourdesinformationssupplmentaires).

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 3/59

    Instructionsparordrealphabtique:

    Instruction Oprandes Description

    AAA Pasd'oprande

    AjustementASCIIaprsAddition.CorrigelersultatdansALetAHaprsadditionlorsd'uneoprationenvaleursBCD.

    Celafonctionneselonl'algorithmesuivant:

    Sinibble(quartetoudemioctet)depoidsfaibledansAL>9ouAF=1alors:

    AL=AL+6AH=AH+1AF=1CF=1

    sinon

    AF=0CF=0

    danslesdeuxcas:effacerlenibbledepoidsfortdansAL.

    Exemple:

    MOVAX,15AH=00,AL=0FhAAAAH=01,AL=05RET

    C Z S O P Ar ? ? ? ? r

    AAD Pasd'oprande

    AjustementASCIIavantDivision.PrparelesdeuxvaleursBCDpourladivision.

    Algorithme:

    AL=(AH*10)+ALAH=0

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 4/59

    Exemple:

    MOVAX,0105hAH=01,AL=05AADAH=00,AL=0Fh(15)RET

    C Z S O P A? r r ? r ?

    AAM Pasd'oprande

    AjustementASCIIaprsMultiplication.CorrigelersultatdelamultiplicationdanslesdeuxvaleursBCD.

    Algorithme:

    AH=AL/10AL=reste

    Exemple:

    MOVAL,15AL=0FhAAMAH=01,AL=05RET

    C Z S O P A? r r ? r ?

    AAS Pasd'oprande

    AjustementASCIIaprsSoustraction.CorrigelersultatdansALetAHaprssoustractionlorsd'uneoprationenvaleursBCD.

    Algorithme:

    Sinibble(quartetoudemioctet)depoidsfaibledansAL>9ouAF=1alors:

    AL=AL6AH=AH1AF=1CF=1

    sinon

    AF=0CF=0

    danslesdeuxcas:

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 5/59

    effacerlenibbledepoidsfortdansAL.

    Exemple:

    MOVAX,02FFhAH=02,AL=0FFhAASAH=01,AL=09RET

    C Z S O P Ar ? ? ? ? r

    ADC

    REG,mmoiremmoire,REGREG,REGmmoire,immdiateREG,immdiate

    Additionavecretenue.

    Algorithme:

    oprande1=oprande1+oprande2+CF

    Exemple:

    STCplaceCF1MOVAL,5AL=5ADCAL,1AL=7RET

    C Z S O P Ar r r r r r

    ADD

    REG,mmoiremmoire,REGREG,REGmmoire,immdiateREG,immdiate

    Addition.

    Algorithme:

    oprande1=oprande1+oprande2

    Exemple:

    MOVAL,5AL=5ADDAL,3AL=2RET

    C Z S O P Ar r r r r r

    AND(ouET)logiqueentretouslesbitsdesdeuxoprandes.Lersultateststockdansoprande1.

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 6/59

    AND

    REG,mmoiremmoire,REGREG,REGmmoire,immdiateREG,immdiate

    Tabledevrit:

    1AND1=11AND0=00AND1=00AND0=0

    Exemple:

    MOVAL,'a'AL=01100001bANDAL,11011111bAL=01000001b('A')RET

    C Z S O P0 r r 0 r

    CALLnomdelaprocdurelabeladressede4octets

    Appeldeprocdure,l'adressederetourdans(IP)estplacesurlapile.L'adressede4octetspeuts'criresouslaformesuivante:1234h:5678h,lapremirevaleurestlesegmentetladeuximeestl'offset(c'estunappellong,CSestgalementplacsurlapile).

    Exemple:

    #make_COM#ORG100hpourunfichierCOM.

    CALLp1

    ADDAX,1

    RETretourausystmed'exploitation.

    p1PROCdclarationdelaprocdure.MOVAX,1234hRETretourl'appel.p1ENDP

    C Z S O P Ainchangs

    Conversiond'octetenmot(word).

    Algorithme:

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 7/59

    CBW Pasd'oprande

    Silebitdepoidsfort(bitdesigne)dansAL=1alors:

    AH=255(0FFh)

    sinon

    AH=0

    Exemple:

    MOVAX,0AH=0,AL=0MOVAL,5AX=000FBh(251)CBWAX=0FFFBh(5)RET

    C Z S O P Ainchangs

    CLC Pasd'oprande

    Misezroduflagderetenue.

    Algorithme:

    CF=0

    C0

    CLD Pasd'oprande

    Misezroduflagdedirection.LesregistresSIetDIserontincrmentsparlesinstructionspourchanessuivantes:CMPSB,CMPSW,LODSB,LODSW,MOVSB,MOVSW,STOSB,STOSW.

    Algorithme:

    DF=0

    D0

    Misezroduflagd'interruption.Dsactivedesinterruptionsmatrielles.

    Algorithme:

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 8/59

    CLI Pasd'oprandeIF=0

    I0

    CMC Pasd'oprande

    Complmenteleflagderetenue.InverselavaleurduflagCF.

    Algorithme:

    siCF=1alorsCF=0siCF=0alorsCF=1

    Cr

    CMP

    REG,mmoiremmoire,REGREG,REGmmoire,immdiateREG,immdiate

    Comparedeuxoprandes.

    Algorithme:

    oprande1oprande2

    Lersultatn'estpasstock,lesflags(OF,SF,ZF,AF,PF,CF)sontpositionnsselonlersultat.

    Exemple:

    MOVAL,5MOVBL,5CMPAL,BLAL=5,ZF=1(galit!)RET

    C Z S O P Ar r r r r r

    Comparelesoctetsde:ES:[DI]etDS:[SI].

    Algorithme:

    DS:[SI]ES:[DI]Positionnelesflags:OF,SF,ZF,AF,PF,CFselonlersultat.siDF=0alors

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 9/59

    CMPSB Pasd'oprandeSI=SI+1DI=DI+1

    sinonSI=SI1DI=DI1

    Exemple:Voircmpsb.asmdansledossier"Samples".

    C Z S O P Ar r r r r r

    CMPSW Pasd'oprande

    Comparelesmots:ES:[DI]etDS:[SI].

    Algorithme:

    DS:[SI]ES:[DI]Positionnelesflags:OF,SF,ZF,AF,PF,CFselonlersultat.siDF=0alors

    SI=SI+2DI=DI+2

    sinonSI=SI2DI=DI2

    Exemple:Voircmpsw.asmdansledossier"Samples".

    C Z S O P Ar r r r r r

    CWD Pasd'oprande

    Conversiondemotendoublemot.

    Algorithme:

    silebitdepoidsfortdansAX=1alors:

    DX=65535(0FFFFh)

    sinon

    DX=0

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 10/59

    Exemple:

    MOVDX,0DX=0MOVAX,0AX=0MOVAX,5DXAX=00000h:0FFFBhCWDDXAX=0FFFFh:0FFFBhRET

    C Z S O P Ainchangs

    DAA Pasd'oprande

    AjustementdcimalaprsAddition.Corrigelersultatdel'additiondesdeuxvaleursBCDcompactes.

    Algorithme:

    siledemioctetdepoidsfaibledansAL>9ouAF=1alors:

    AL=AL+6AF=1

    siAL>9FhouCF=1alors:

    AL=AL+60hCF=1

    Exemple:

    MOVAL,0FhAL=0Fh(15)DAAAL=15hRET

    C Z S O P Ar r r r r r

    AjustementdcimalaprsSoustraction.CorrigelersultatdelasoustractiondesdeuxvaleursBCDcompactes.

    Algorithme:

    siledemioctetdepoidsfaibledansAL>9ouAF=1alors:

    AL=AL6AF=1

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 11/59

    DAS Pasd'oprandesiAL>9FhouCF=1alors:

    AL=AL60hCF=1

    Exemple:

    MOVAL,0FFhAL=0FFh(1)DASAL=99h,CF=1RET

    C Z S O P Ar r r r r r

    DEC REGmmoire

    Dcrment.

    Algorithme:

    oprande=oprande1

    Exemple:

    MOVAL,255AL=0FFh(255or1)DECALAL=0FEh(254or2)RET

    Z S O P Ar r r r rCFinchang!

    DIV REGmmoire

    Divisionnonsigne.

    Algorithme:

    lorsquel'oprandeestunoctet:AL=AX/oprandeAH=reste(coefficient)

    lorsquel'oprandeestunmot:AX=(DXAX)/oprandeDX=reste(coefficient)

    Exemple:

    MOVAX,203AX=00CBhMOVBL,4DIVBLAL=50(32h),AH=3RET

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 12/59

    C Z S O P A? ? ? ? ? ?

    HLT Pasd'oprande

    Suspendl'excutionetplacele8086dansl'tatHALT.

    Exemple:

    MOVAX,5HLT

    C Z S O P Ainchangs

    IDIV REGmmoire

    Divisionsigne.

    Algorithme:

    lorsquel'oprandeestunoctet:AL=AX/oprandeAH=reste(coefficient)

    lorsquel'oprandeestunmot:AX=(DXAX)/oprandeDX=reste(coefficient)

    Exemple:

    MOVAX,203AX=0FF35hMOVBL,4IDIVBLAL=50(0CEh),AH=3(0FDh)RET

    C Z S O P A? ? ? ? ? ?

    Multiplicationsigne.

    Algorithme:

    orsquel'oprandeestunoctet:AX=AL*oprande.

    lorsquel'oprandeestunmot:(DXAX)=AX*oprande.

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 13/59

    IMUL REGmmoire

    Exemple:

    MOVAL,2MOVBL,4IMULBLAX=8RET

    C Z S O P Ar ? ? r ? ?CF=OF=0lorsdesajustementsdursultatdansl'oprandeparIMUL.

    IN

    AL,im.octetAL,DXAX,im.octetAX,DX

    TransfreladonneluesurleportdansALouAX.Lesecondoprandeestlenumrodeport.Ilestpossibled'accdern'importequelportcomprisentre0et255.LenumrodeportseplacedansleregistreDX.

    Exemple:

    INAX,4obtenirlestatutdesfeuxdecirculation.INAL,7obtenirlestatutdumoteurpaspas.

    C Z S O P Ainchangs

    INC REGmmoire

    Incrment.

    Algorithme:

    oprande=oprande+1

    Exemple:

    MOVAL,4INCALAL=5RET

    Z S O P Ar r r r rCFinchang!

    Appeld'uneprocdured'interruption.Numrod'interruptionparunoctetimmdiatcomprisentre0et255.

    Algorithme:

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 14/59

    INT octetimmdiat

    Sauvegardesurlapile:registresdeflagCSIP

    IF=0Appeldelaprocdured'interruption

    Exemple:

    MOVAH,0Ehtltype.MOVAL,'A'INT10hinterruptionduBIOS.RET

    C Z S O P A Iinchangs 0

    INTO Pasd'oprande

    Appeld'uneprocdured'interruption.Interruption4sileflagdedbordementest1.

    Algorithme:

    siOF=1alorsINT4

    Exemple:

    5127=132(n'estpasentre128et127)lersultatdeSUB(124)estfaux,doncOFestplac1:MOVAL,5SUBAL,127AL=7Ch(124)INTOerreurdeprocdure.RET

    IRET Pasd'oprande

    Retourd'interruption.

    Algorithme:

    Restauredepuislapile:IPCSregistresdeflag

    C Z S O P Arestaurs

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 15/59

    JA label

    Sautsilaconditionestralise.Sautcourtsilepremieroprandeestsuprieuraudeuximeoprande(identiquel'instructionCMP).Nonsign.

    Algorithme:

    si(CF=0)et(ZF=0)alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,250CMPAL,5JAlabel1PRINT'ALn'estpassuprieur5'JMPexitlabel1:PRINT'ALestsuprieur5'exit:RET

    C Z S O P Ainchangs

    JAE label

    Sautsilaconditionestralise.Sautcourtsilepremieroprandeestsuprieurougalaudeuximeoprande(identiquel'instructionCMP).Nonsign.

    Algorithme:

    siCF=0alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,5CMPAL,5JAElabel1PRINT'ALn'estpassuprieurougal5'JMPexitlabel1:PRINT'ALestsuprieurougal5'

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 16/59

    exit:RET

    C Z S O P Ainchangs

    JB label

    Sautsilaconditionestralise.Sautcourtsilepremieroprandeestinfrieuraudeuximeoprande(identiquel'instructionCMP).Nonsign.

    Algorithme:

    siCF=1alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,1CMPAL,5JBlabel1PRINT'ALn'estpasinfrieur5'JMPexitlabel1:PRINT'ALestinfrieur5'exit:RET

    C Z S O P Ainchangs

    JBE label

    Sautsilaconditionestralise.Sautcourtsilepremieroprandeestinfrieurougalaudeuximeoprande(identiquel'instructionCMP).Nonsign.

    Algorithme:

    siCF=1ouZF=1alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,5

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 17/59

    CMPAL,5JBElabel1PRINT'ALn'estpasinfrieurougal5'JMPexitlabel1:PRINT'ALestinfrieurougal5'exit:RET

    C Z S O P Ainchangs

    JC label

    Sautsilaconditionestralise.Sautcourtsileflagderetenue(carry)est1.

    Algorithme:

    siCF=1alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,255ADDAL,1JClabel1PRINT'pasderetenue.'JMPexitlabel1:PRINT'ilyaretenue.'exit:RET

    C Z S O P Ainchangs

    Sautsilaconditionestralise.SautcourtsileregistreCXvaut0.

    Algorithme:

    siCX=0alorssaut

    Exemple:

    include'emu8086.inc'

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 18/59

    JCXZ label#make_COM#ORG100hMOVCX,0JCXZlabel1PRINT'CXnevautpas0.'JMPexitlabel1:PRINT'CXvautzro.'exit:RET

    C Z S O P Ainchangs

    JE label

    Sautsilaconditionestralise.Sautcourtsilepremieroprandeestgalaudeuximeoprande(identiquel'instructionCMP).SignetNonsign.

    Algorithme:

    siZF=1alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,5CMPAL,5JElabel1PRINT'ALn'estpasgal5.'JMPexitlabel1:PRINT'ALestgal5.'exit:RET

    C Z S O P Ainchangs

    Sautsilaconditionestralise.Sautcourtsilepremieroprandeestsuprieuraudeuximeoprande(identiquel'instructionCMP).Sign.

    Algorithme:

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 19/59

    JG label

    si(ZF=0)et(SF=OF)alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,5CMPAL,5JGlabel1PRINT'ALn'estpassuprieur5.'JMPexitlabel1:PRINT'ALestsuprieur5.'exit:RET

    C Z S O P Ainchangs

    JGE label

    Sautsilaconditionestralise.Sautcourtsilepremieroprandeestsuprieurougalaudeuximeoprande(identiquel'instructionCMP).Sign.

    Algorithme:

    siSF=OFalorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,2CMPAL,5JGElabel1PRINT'AL=5'exit:RET

    C Z S O P Ainchangs

    Sautsilaconditionestralise.Sautcourtsilepremieroprandeest

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 20/59

    JL label

    infrieuraudeuximeoprande(identiquel'instructionCMP).Sign.

    Algorithme:

    siSFOFalorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,2CMPAL,5JLlabel1PRINT'AL>=5.'JMPexitlabel1:PRINT'AL

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 21/59

    inchangs

    JMP labeladressesur4octets

    Sautinconditionnel.Transfrelecontrleuneautrepartieduprogramme.L'adressesur4octetss'critsouslaformesuivante:1234h:5678h,lapremirevaleurestlavaleurdesegmentetladeuximeestlavaleurd'offset.

    Algorithme:

    sautdanstouslescas

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,5JMPlabel1sautaudessusde2lignes!PRINT'Pasdesaut!'MOVAL,0label1:PRINT'Arrivici!'RET

    C Z S O P Ainchangs

    JNA label

    Sautsilaconditionestralise.Sautcourtsilepremieroprandeestnonsuprieuraudeuximeoprande(identiquel'instructionCMP).Nonsign.

    Algorithme:

    siCF=1ouZF=1alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,2CMPAL,5JNAlabel1PRINT'ALestsuprieur5.'

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 22/59

    JMPexitlabel1:PRINT'ALestnonsuprieur5.'exit:RET

    C Z S O P Ainchangs

    JNAE label

    Sautsilaconditionestralise.Sautcourtsilepremieroprandeestnonsuprieurounongalaudeuximeoprande(identiquel'instructionCMP).Nonsign.

    Algorithme:

    siCF=1alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,2CMPAL,5JNAElabel1PRINT'AL>=5.'JMPexitlabel1:PRINT'AL

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 23/59

    JNB label

    include'emu8086.inc'#make_COM#ORG100hMOVAL,7CMPAL,5JNBlabel1PRINT'AL=5.'exit:RET

    C Z S O P Ainchangs

    JNBE label

    Sautsilaconditionestralise.Sautcourtsilepremieroprandeestnoninfrieuretnongalaudeuximeoprande(identiquel'instructionCMP).Nonsign.

    Algorithme:

    si(CF=0)et(ZF=0)alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,7CMPAL,5JNBElabel1PRINT'AL5.'exit:RET

    C Z S O P Ainchangs

    Sautsilaconditionestralise.Sautcourtsileflagderetenue(carry)est0.

    Algorithme:

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 24/59

    JNC label

    siCF=0alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,2ADDAL,3JNClabel1PRINT'ilyaretenue.'JMPexitlabel1:PRINT'pasderetenue.'exit:RET

    C Z S O P Ainchangs

    JNE label

    Sautsilaconditionestralise.Sautcourtsilepremieroprandeestnongalaudeuximeoprande(identiquel'instructionCMP).Signetnonsign.

    Algorithme:

    siZF=0alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,2CMPAL,3JNElabel1PRINT'AL=3.'JMPexitlabel1:PRINT'Al3.'exit:RET

    C Z S O P Ainchangs

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 25/59

    JNG label

    Sautsilaconditionestralise.Sautcourtsilepremieroprandeestnonsuprieuraudeuximeoprande(identiquel'instructionCMP).Sign.

    Algorithme:

    si(ZF=1)et(SFOF)alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,2CMPAL,3JNGlabel1PRINT'AL>3.'JMPexitlabel1:PRINT'Al

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 26/59

    RET

    C Z S O P Ainchangs

    JNL label

    Sautsilaconditionestralise.Sautcourtsilepremieroprandeestnoninfrieuraudeuximeoprande(identiquel'instructionCMP).Sign.

    Algorithme:

    siSF=OFalorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,2CMPAL,3JNLlabel1PRINT'AL=3.'exit:RET

    C Z S O P Ainchangs

    JNLE label

    Sautsilaconditionestralise.Sautcourtsilepremieroprandeestnoninfrieuretnongalaudeuximeoprande(identiquel'instructionCMP).Sign.

    Algorithme:

    si(SF=OF)et(ZF=0)alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,2CMPAL,3

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 27/59

    JNLElabel1PRINT'AL3.'exit:RET

    C Z S O P Ainchangs

    JNO label

    Sautsilaconditionestralise.Sautcourtsipasdedbordement.

    Algorithme:

    siOF=0alorssaut

    Exemple:

    52=7(setrouveentre128et127)lersultatdel'instructionSUBestcorrect,doncOF=0:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,5SUBAL,2AL=0F9h(7)JNOlabel1PRINT'Dbordement!'JMPexitlabel1:PRINT'Pasdedbordement.'exit:RET

    C Z S O P Ainchangs

    Sautsilaconditionestralise.Sautcourtsipasdeparit(impaire).Seullersultatdes8bitsdepoidsfaibleestvrifi.CeflagestpositionnparlesinstructionsCMP,SUB,ADD,TEST,AND,OR,XOR.

    Algorithme:

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 28/59

    JNP label

    siPF=0alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,00000111bAL=7ORAL,0positionnejustelesflags.JNPlabel1PRINT'Paritpaire.'JMPexitlabel1:PRINT'Paritimpaire.'exit:RET

    C Z S O P Ainchangs

    JNS label

    Sautsilaconditionestralise.Sautcourtsinonsign(positif).CeflagestpositionnparlesinstructionsCMP,SUB,ADD,TEST,AND,OR,XOR.

    Algorithme:

    siSF=0alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,00000111bAL=7ORAL,0positionnejustelesflags.JNSlabel1PRINT'Sign.'JMPexitlabel1:PRINT'Nonsign.'exit:RET

    C Z S O P Ainchangs

    Sautsilaconditionestralise.Sautcourtsinonzro(pasgal).Ceflag

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 29/59

    JNZ label

    estpositionnparlesinstructionsCMP,SUB,ADD,TEST,AND,OR,XOR.

    Algorithme:

    siZF=0alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,00000111bAL=7ORAL,0positionnejustelesflags.JNZlabel1PRINT'Zro.'JMPexitlabel1:PRINT'Nonzro.'exit:RET

    C Z S O P Ainchangs

    JO label

    Sautsilaconditionestralise.Sautcourtsidbordement.

    Algorithme:

    siOF=1alorssaut

    Exemple:

    5127=132(nesetrouvepasentre128et127)lersultatdel'instructionSUBestfaux(124),doncOF=1:

    include'emu8086.inc'#make_COM#org100hMOVAL,5SUBAL,127AL=7Ch(124)JOlabel1PRINT'Pasdedbordement.'JMPexitlabel1:PRINT'Dbordement!'exit:RET

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 30/59

    C Z S O P Ainchangs

    JP label

    Sautsilaconditionestralise.Sautcourtsiparit(paire).Seullersultatdes8bitsdepoidsfaibleestvrifi.CeflagestpositionnparlesinstructionsCMP,SUB,ADD,TEST,AND,OR,XOR.

    Algorithme:

    siPF=1alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,00000101bAL=5ORAL,0positionnejustelesflags.JPlabel1PRINT'Paritimpaire.'JMPexitlabel1:PRINT'Paritpaire.'exit:RET

    C Z S O P Ainchangs

    JPE label

    Sautsilaconditionestralise.Sautcourtsiparit(paire).Seullersultatdes8bitsdepoidsfaibleestvrifi.CeflagestpositionnparlesinstructionsCMP,SUB,ADD,TEST,AND,OR,XOR.

    Algorithme:

    siPF=1alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,00000101bAL=5ORAL,0positionnejustelesflags.

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 31/59

    JPElabel1PRINT'Paritimpaire.'JMPexitlabel1:PRINT'Paritpaire.'exit:RET

    C Z S O P Ainchangs

    JPO label

    Sautsilaconditionestralise.Sautcourtsiparit(impaire).Seullersultatdes8bitsdepoidsfaibleestvrifi.CeflagestpositionnparlesinstructionsCMP,SUB,ADD,TEST,AND,OR,XOR.

    Algorithme:

    siPF=0alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,00000111bAL=7ORAL,0positionnejustelesflags.JPOlabel1PRINT'Paritpaire.'JMPexitlabel1:PRINT'Paritimpaire.'exit:RET

    C Z S O P Ainchangs

    Sautsilaconditionestralise.Sautcourtsisign(ngatif).CeflagestpositionnparlesinstructionsCMP,SUB,ADD,TEST,AND,OR,XOR.

    Algorithme:

    siSF=1alorssaut

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 32/59

    JS label

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,10000000bAL=128ORAL,0positionnejustelesflags.JSlabel1PRINT'Nonsign.'JMPexitlabel1:PRINT'Sign.'exit:RET

    C Z S O P Ainchangs

    JZ label

    Sautsilaconditionestralise.Sautcourtsizro(gal).CeflagestpositionnparlesinstructionsCMP,SUB,ADD,TEST,AND,OR,XOR.

    Algorithme:

    siZF=1alorssaut

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVAL,5CMPAL,5JZlabel1PRINT'ALn'estpasgal5.'JMPexitlabel1:PRINT'ALestgal5.'exit:RET

    C Z S O P Ainchangs

    ChargeAHavecles8bitsdepoidsfaibleduregistredeflags.

    Algorithme:

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 33/59

    LAHF Pasd'oprande

    AH=registredeflags

    BitsdeAH:76543210[SF][ZF][0][AF][0][PF][1][CF]

    lesbits1,3,5sontrservs.

    C Z S O P Ainchangs

    LDS REG,mmoire

    Chargeunpointeurlong(doublemot)partirdelammoiredansunregistre16bitsetdansDS.

    Algorithme:

    REG=premiermotDS=deuximemot

    Exemple:

    #make_COM#ORG100h

    LDSAX,m

    RET

    mDW1234hDW5678h

    END

    AXcontient1234h,DScontient5678h.

    C Z S O P Ainchangs

    Chargeuneadresseeffective

    Algorithme:

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 34/59

    LEA REG,mmoire

    REG=adressedemmoire(offset)

    Gnralement,cetteinstructionestremplacesipossibleparMOVlorsdel'assemblage.

    Exemple:

    #make_COM#ORG100h

    LEAAX,m

    RET

    mDW1234h

    END

    AXcontient:0104h.L'instructionLEAutilise3octets,RETutilise1octetpourleretour,nousdbutons100h,doncl'adressede'm'est104h.

    C Z S O P Ainchangs

    LES REG,mmoire

    Chargeunpointeurlong(doublemot)partirdelammoiredansunregistre16bitsetdansES.

    Algorithme:

    REG=premiermotES=deuximemot

    Exemple:

    #make_COM#ORG100h

    LESAX,m

    RET

    mDW1234h

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 35/59

    DW5678h

    END

    AXcontient1234h,EScontient5678h.

    C Z S O P Ainchangs

    LODSB Pasd'oprande

    ChargeunoctetdepuisDS:[SI]dansALetmisejourdeSI.

    Algorithme:

    AL=DS:[SI]siDF=0alors

    SI=SI+1sinon

    SI=SI1

    Exemple:

    #make_COM#ORG100h

    LEASI,a1MOVCX,5MOVAH,0Eh

    m:LODSBINT10hLOOPm

    RET

    a1DB'H','e','l','l','o'

    C Z S O P Ainchangs

    ChargeunmotdepuisDS:[SI]dansAXetmisejourdeSI.

    Algorithme:

    AX=DS:[SI]siDF=0alors

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 36/59

    LODSW Pasd'oprande

    SI=SI+2sinon

    SI=SI2

    Exemple:

    #make_COM#ORG100h

    LEASI,a1MOVCX,5

    REPLODSWlafin,ilyaura555hdansAX.

    RET

    a1dw111h,222h,333h,444h,555h

    C Z S O P Ainchangs

    LOOP label

    DcrmenteCX,boucleenrevenantaulabeltantqueCXn'estpaszro.

    Algorithme:

    CX=CX1siCX0alors

    sautsinon

    pasdesaut,continue

    Exemple:

    include'emu8086.inc'#make_COM#ORG100hMOVCX,5label1:PRINTN'boucle!'LOOPlabel1RET

    C Z S O P Ainchangs

    DcrmenteCX,boucleenrevenantaulabelsiCXnonzroetgal(ZF=1).

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 37/59

    LOOPE label

    Algorithme:

    CX=CX1si(CX0)et(ZF=1)alors

    sautsinon

    pasdesaut,continue

    Exemple:

    Bouclejusqu'cequelersultatdansALsoit1ou5fois.Lersultatserasuprieur255lorsdelatroisimeboucle(100+100+100)etsortiradelaboucle.

    include'emu8086.inc'#make_COM#ORG100hMOVAX,0MOVCX,5label1:PUTC'*'ADDAX,100CMPAH,0LOOPElabel1RET

    C Z S O P Ainchangs

    LOOPNE label

    DcrmenteCX,boucleenrevenantaulabelsiCXnonzroetnongal(ZF=0).

    Algorithme:

    CX=CX1si(CX0)et(ZF=0)alors

    sautsinon

    pasdesaut,continue

    Exemple:

    Bouclejusqu'ceque'7'soittrouvouque5bouclessoienteffectues.

    include'emu8086.inc'#make_COM#ORG100hMOVSI,0

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 38/59

    MOVCX,5label1:PUTC'*'MOVAL,v1[SI]INCSIoctetsuivant:(SI=SI+1).CMPAL,7LOOPNElabel1RETv1db9,8,7,6,5

    C Z S O P Ainchangs

    LOOPNZ label

    DcrmenteCX,boucleenrevenantaulabelsiCXnonzroetnongal(ZF=0).

    Algorithme:

    CX=CX1si(CX0)et(ZF=0)alors

    sautsinon

    pasdesaut,continue

    Exemple:

    Bouclejusqu'ceque'7'soittrouvouque5bouclessoienteffectues.

    include'emu8086.inc'#make_COM#ORG100hMOVSI,0MOVCX,5label1:PUTC'*'MOVAL,v1[SI]INCSIoctetsuivant:(SI=SI+1).CMPAL,7LOOPNZlabel1RETv1db9,8,7,6,5

    C Z S O P Ainchangs

    DcrmenteCX,boucleenrevenantaulabelsiCXnonzroetZF=1.

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 39/59

    LOOPZ label

    Algorithme:

    CX=CX1si(CX0)et(ZF=1)alors

    sautsinon

    pasdesaut,continue

    Exemple:

    Bouclejusqu'cequelersultatdansALsoit1ou5fois.Lersultatserasuprieur255lorsdelatroisimeboucle(100+100+100)etsortiradelaboucle.

    include'emu8086.inc'#make_COM#ORG100hMOVAX,0MOVCX,5label1:PUTC'*'ADDAX,100CMPAH,0LOOPZlabel1RET

    C Z S O P Ainchangs

    MOV

    REG,mmoiremmoire,REGREG,REGmmoire,immdiateREG,immdiate

    SREG,mmoire

    Copiel'oprande2dansl'oprande1.

    L'instructionMOVnepeutpas:

    UtiliserlesvaleursdesregistresCSetIP.Copierlavaleurd'unregistredesegmentdansunautreregistredesegment(ilfautd'abordcopierlavaleurd'unsegmentderegistredansunregistregnraletensuite,copierdansunautreregistredesegment).Copierunevaleurimmdiatedansunregistredesegment(ilfautd'abord,passerparunregistregnral).

    Algorithme:

    oprande1=oprande2

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 40/59

    mmoire,SREGREG,SREGSREG,REG

    Exemple:

    #make_COM#ORG100hMOVAX,0B800hAX=B800h(mmoireVGA).MOVDS,AXcopielavaleurdeAXdansDS.MOVCL,'A'CL=41h(codeASCII).MOVCH,01011111bCL=attributcouleur.MOVBX,15EhBX=positiond'affichage.MOV[BX],CXw.[0B800h:015Eh]=CX.RETretourausystmed'exploitation.

    C Z S O P Ainchangs

    MOVSB Pasd'oprande

    Copiel'octetdeDS:[SI]dansES:[DI].MetjourSIetDI.

    Algorithme:

    ES:[DI]=DS:[SI]siDF=0alors

    SI=SI+1DI=DI+1

    sinonSI=SI1DI=DI1

    Exemple:

    #make_COM#ORG100h

    LEASI,a1LEADI,a2MOVCX,5REPMOVSB

    RET

    a1DB1,2,3,4,5a2DB5DUP(0)

    C Z S O P Ainchangs

    CopielemotdeDS:[SI]dansES:[DI].Met

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 41/59

    MOVSW Pasd'oprande

    jourSIetDI.

    Algorithme:

    ES:[DI]=DS:[SI]siDF=0alors

    SI=SI+2DI=DI+2

    sinonSI=SI2DI=DI2

    Exemple:

    #make_COM#ORG100h

    LEASI,a1LEADI,a2MOVCX,5REPMOVSW

    RET

    a1DW1,2,3,4,5a2DW5DUP(0)

    C Z S O P Ainchangs

    MUL REGmmoire

    Multiplicationnonsigne.

    Algorithme:

    lorsquel'oprandeestunoctet:AX=AL*oprande.

    lorsquel'oprandeestunmot:(DXAX)=AX*oprande.

    Exemple:

    MOVAL,200AL=0C8hMOVBL,4MULBLAX=0320h(800)RET

    C Z S O P Ar ? ? r ? ?

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 42/59

    CF=OF=0silasectionhautedursultatestzro.

    NEG REGmmoire

    Ngation.Transformelavaleurd'unoprandeenvaleurngative(parsoncomplmentdeux).

    Algorithme:

    Inversetouslesbitsdel'oprandeAdditionne1l'oprandeinvers

    Exemple:

    MOVAL,5AL=05hNEGALAL=0FBh(5)NEGALAL=05h(5)RET

    C Z S O P Ar r r r r r

    NOP Pasd'oprande

    Aucuneopration.

    Algorithme:

    Rien

    Exemple:

    rien,3fois:NOPNOPNOPRET

    C Z S O P Ainchangs

    NOT REG

    Inversechaquebitdel'oprande.

    Algorithme:

    sibitest1remplacepar0.sibitest0remplacepar1.

    Exemple:

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 43/59

    mmory MOVAL,00011011bNOTALAL=11100100bRET

    C Z S O P Ainchangs

    OR

    REG,mmoiremmoire,REGREG,REGmmoire,immdiateREG,immdiate

    EffectueunOR(OU)logiqueentretouslesbitsdesdeuxoprandes.Lersultateststockdanslepremieroprande.

    Tabledevrit:

    1OR(OU)1=11OR(OU)0=10OR(OU)1=10OR(OU)0=0

    Exemple:

    MOVAL,'A'AL=01000001bORAL,00100000bAL=01100001b('a')RET

    C Z S O P A0 r r 0 r ?

    OUT

    im.octet,ALim.octet,AXDX,ALDX,AX

    PlacelavaleurdeALouAXsurleport.Lepremieroprandecontientlenumrodeport.Pouraccderunportdontlenumroestsuprieur255,ilfaututiliserleregistreDX.

    Exemple:

    MOVAX,0FFFhAllumertouslesOUT4,AXfeuxdecirculation.

    MOVAL,100bAlimenterletroisimeOUT7,ALlectroaimantdumoteurpaspas.

    C Z S O P Ainchangs

    Dpileunevaleur16bits.

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 44/59

    POPREGSREGmmoire

    Algorithme:

    oprande=SS:[SP](sommetdelapile)SP=SP+2

    Exemple:

    MOVAX,1234hPUSHAXPOPDXDX=1234hRET

    C Z S O P Ainchangs

    POPA Pasd'oprande

    DpiletouslesregistresgnrauxDI,SI,BP,SP,BX,DX,CX,AX.LavaleurdeSPestignore,elleestdpilemaispasplacedansleregistreSP.

    Note:cetteinstructionfonctionneuniquementaveclesCPU80186ousuprieurs!

    Algorithme:

    POPDIPOPSIPOPBPPOPxx(lavaleurdeSPestignore)POPBXPOPDXPOPCXPOPAX

    C Z S O P Ainchangs

    POPF Pasd'oprande

    Dpileleregistreflags.

    Algorithme:

    flags=SS:[SP](sommetdelapile)SP=SP+2

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 45/59

    C Z S O P Adpils

    PUSH

    REGSREGmmoireimmdiate

    Empileunevaleur16bits.

    Note:EMPILERunevaleurimmdiate,fonctionneuniquementaveclesCPU80186ousuprieurs!

    Algorithme:

    SP=SP2SS:[SP](sommetdelapile)=oprande

    Exemple:

    MOVAX,1234hPUSHAXPOPDXDX=1234hRET

    C Z S O P Ainchangs

    PUSHA Pasd'oprande

    EmpiletouslesregistresgnrauxDI,SI,BP,SP,BX,DX,CX,AX.Lavaleurd'origineduregistreSP(avantPUSHA)estutilise.

    Note:cetteinstructionfonctionneuniquementaveclesCPU80186ousuprieurs!

    Algorithme:

    PUSHAXPUSHCXPUSHDXPUSHBXPUSHSPPUSHBPPUSHSIPUSHDI

    C Z S O P A

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 46/59

    inchangs

    PUSHF Pasd'oprande

    Empileleregistreflags.

    Algorithme:

    SP=SP2SS:[SP](sommetdelapile)=flags

    C Z S O P Ainchangs

    RCL

    mmoire,immdiateREG,immdiate

    mmoire,CLREG,CL

    Larotationeffectueundcalagedel'oprande1gauchedetouslesbitsycomprisleflagderetenue.Lenombrederotationsestcontenudansl'oprande2.Silavaleurimmdiateestsuprieure1,l'assembleurgnreplusieursRCLxx,uneinstructionlafois,carle8086alecodemachineuniquementpourcetteinstruction(lemmeprincipeestutilispourtouteslesautresinstructionsderotations/dcalages).

    Algorithme:

    Dcaletouslesbitsverslagauche,lebitquidbordeestplacdansCFetlebitprcdentdeCFestplaclapositiondroitelaissevideparledcalage.

    Exemple:

    STCplacelaretenue(CF=1).MOVAL,1ChAL=00011100bRCLAL,1AL=00111001b,CF=0.RET

    C Or rOF=0sic'estlepremieroprande,ilconservelesigned'origine.

    Larotationeffectueundcalagedel'oprande1gauchedetouslesbitsy

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 47/59

    RCR

    mmoire,immdiateREG,immdiate

    mmoire,CLREG,CL

    comprisleflagderetenue.Lenombrederotationsestcontenudansl'oprande2.

    Algorithme:

    Dcaletouslesbitsversladroite,lebitquidbordeestplacdansCFetlebitprcdentdeCFestplaclapositiongauchelaissevideparledcalage.

    Exemple:

    STCplacelaretenue(CF=1).MOVAL,1ChAL=00011100bRCRAL,1AL=10001110b,CF=0.RET

    C Or rOF=0sic'estlepremieroprande,ilconservelesigned'origine.

    REP instructionchane

    RptelesinstructionsMOVSB,MOVSW,LODSB,LODSW,STOSB,STOSW,lenombredefoiscontenudansCX.

    Algorithme:

    contrle_cx:

    siCX0alors

    excutel'instructionchanesuivanteCX=CX1retournecontrle_cx

    sinon

    sortducycleREP

    Zr

    RptelesinstructionsCMPSB,CMPSW,SCASB,SCASW,tantqueZF=1(galitdursultat),lenombredefoismaximumcontenudansCX.

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 48/59

    REPE instructionchane

    Algorithme:

    contrle_cx:

    siCX0alors

    excutel'instructionchanesuivanteCX=CX1siZF=1alors:

    retournecontrle_cxsinon

    sortducycleREPE

    sinon

    sortducycleREPE

    Exemple:voircmpsb.asmdansledossier"Samples".

    Zr

    REPNE instructionchane

    RptelesinstructionsCMPSB,CMPSW,SCASB,SCASW,tantqueZF=0(NONgalitdursultat),lenombredefoismaximumcontenudansCX.

    Algorithme:

    contrle_cx:

    siCX0alors

    excutel'instructionchanesuivanteCX=CX1siZF=0alors:

    retournecontrle_cxsinon

    sortducycleREPNE

    sinon

    sortducycleREPNE

    Zr

    RptelesinstructionsCMPSB,CMPSW,

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 49/59

    REPNZ instructionchane

    SCASB,SCASWtantqueZF=0(rsultatNONzro),lenombredefoismaximumcontenudansCX.

    Algorithme:

    contrle_cx:

    siCX0alors

    excutel'instructionchanesuivanteCX=CX1siZF=0alors:

    retournecontrle_cxsinon

    sortducycleREPNZ

    sinon

    sortducycleREPNZ

    Zr

    REPZ instructionchane

    RptelesinstructionsCMPSB,CMPSW,SCASB,SCASWtantqueZF=1(rsultatzro),lenombredefoismaximumcontenudansCX.

    Algorithme:

    contrle_cx:

    siCX0alors

    excutel'instructionchanesuivanteCX=CX1siZF=1alors:

    retournecontrle_cxsinon

    sortducycleREPZ

    sinon

    sortducycleREPZ

    Zr

    Retourdesousprogramme(court).

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 50/59

    RET Pasd'oprandemmeimmdiat

    Algorithme:

    Dpile:IP

    siunoprandeimmdiatestprsent:SP=SP+oprande

    Exemple:

    #make_COM#ORG100hpourunfichierexcutableCOM.

    CALLp1

    ADDAX,1

    RETretourausystmed'exploitation.

    p1PROCdclarationdelaprocdure.MOVAX,1234hRETretourl'appelant.p1ENDP

    C Z S O P Ainchangs

    RETF Pasd'oprandemmeimmdiat

    Retourdesousprogramme(long).

    Algorithme:

    Dpile:IPCS

    siunoprandeimmdiatestprsent:SP=SP+operand

    C Z S O P Ainchangs

    Larotationeffectueundcalagedel'oprande1gauche.Lenombrederotationsestcontenudansl'oprande2.

    Algorithme:

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 51/59

    ROL

    mmoire,immdiateREG,immdiate

    mmoire,CLREG,CL

    Dcaletouslesbitsverslagauche,lebitquidbordeestplacdansCFetlebitprcdentdeCFestplaclapositiondroitelaissevideparledcalage.

    Exemple:

    MOVAL,1ChAL=00011100bROLAL,1AL=00111000b,CF=0.RET

    C Or rOF=0sic'estlepremieroprande,ilconservelesigned'origine.

    ROR

    mmoire,immdiateREG,immdiate

    mmoire,CLREG,CL

    Larotationeffectueundcalagedel'oprande1droite.Lenombrederotationsestcontenudansl'oprande2.

    Algorithme:

    Dcaletouslesbitsversladroite,lebitquidbordeestplacdansCFetlebitprcdentdeCFestplaclapositiongauchelaissevideparledcalage.

    Exemple:

    MOVAL,1ChAL=00011100bRORAL,1AL=00001110b,CF=0.RET

    C Or rOF=0sic'estlepremieroprande,ilconservelesigned'origine.

    SAHF Pasd'oprande

    Placedansleregistredeflagsles8bitsdepoidsfaibledelavaleurdeAH.

    Algorithme:

    AH=registredeflags

    BitsdeAH:76543210[SF][ZF][0][AF][0][PF][1][CF]

    lesbits1,3,5sontrservs.

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 52/59

    C Z S O P Ar r r r r r

    SAL

    mmoire,immdiateREG,immdiate

    mmoire,CLREG,CL

    Effectueundcalagearithmtiquedel'oprande1gauche.Lenombrededcalagesestcontenudansl'oprande2.

    Algorithme:

    Dcaletouslesbitsverslagauche,lebitquidbordeestplacdansCF.Lebit0droiteestmis0.

    Exemple:

    MOVAL,0E0hAL=11100000bSALAL,1AL=11000000b,CF=1.RET

    C Or rOF=0sic'estlepremieroprande,ilconservelesigned'origine.

    SAR

    mmoire,immdiateREG,immdiate

    mmoire,CLREG,CL

    Effectueundcalagearithmtiquedel'oprande1droite.Lenombrededcalagesestcontenudansl'oprande2.

    Algorithme:

    Dcaletouslesbitsversladroite,lebitquidbordeestplacdansCF.Lebitdesignegauche,gardelammevaleurqu'avantledcalage.

    Exemple:

    MOVAL,0E0hAL=11100000bSARAL,1AL=11110000b,CF=0.

    MOVBL,4ChBL=01001100bSARBL,1BL=00100110b,CF=0.

    RET

    C Or r

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 53/59

    OF=0sic'estlepremieroprande,ilconservelesigned'origine.

    SBB

    REG,mmoiremmoire,REGREG,REGmmoire,immdiateREG,immdiate

    Soustractionavecretenue.

    Algorithme:

    oprande1=oprande1oprande2CF

    Exemple:

    STCMOVAL,5SBBAL,3AL=531=1

    RET

    C Z S O P Ar r r r r r

    SCASB Pasd'oprande

    Comparelesoctets:ALavecES:[DI].

    Algorithme:

    ES:[DI]ALplacelesflagssuivantlersultat:OF,SF,ZF,AF,PF,CFsiDF=0alors

    DI=DI+1sinon

    DI=DI1

    C Z S O P Ar r r r r r

    SCASW Pasd'oprande

    Comparelesoctets:AXavecES:[DI].

    Algorithme:

    ES:[DI]AXplacelesflagssuivantlersultat:OF,SF,ZF,AF,PF,CFsiDF=0alors

    DI=DI+2sinon

    DI=DI2

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 54/59

    C Z S O P Ar r r r r r

    SHL

    mmoire,immdiateREG,immdiate

    mmoire,CLREG,CL

    Effectueundcalagedel'oprande1gauche.Lenombrededcalagesestcontenudansl'oprande2.

    Algorithme:

    Dcaletouslesbitsverslagauche,lebitquidbordeestplacdansCF.Lebit0droiteestmis0.

    Exemple:

    MOVAL,11100000bSHLAL,1AL=11000000b,CF=1.

    RET

    C Or rOF=0sic'estlepremieroprande,ilconservelesigned'origine.

    SHR

    mmoire,immdiateREG,immdiate

    mmoire,CLREG,CL

    Effectueundcalagedel'oprande1droite.Lenombrededcalagesestcontenudansl'oprande2.

    Algorithme:

    Dcaletouslesbitsversladroite,lebitquidbordeestplacdansCF.Lebit0gaucheestmis0.

    Exemple:

    MOVAL,00000111bSHRAL,1AL=00000011b,CF=1.

    RET

    C Or rOF=0sic'estlepremieroprande,ilconservelesigned'origine.

    Mise1duflagderetenue.

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 55/59

    STC Pasd'oprande

    Algorithme:

    CF=1

    C1

    STD Pasd'oprande

    Mise1duflagdedirection.SIetDIserontdcrmentsparlesinstructionschanessuivantes:CMPSB,CMPSW,LODSB,LODSW,MOVSB,MOVSW,STOSB,STOSW.

    Algorithme:

    DF=1

    D1

    STI Pasd'oprande

    Mise1duflagd'interruption.Dsactivedesinterruptionsmatrielles.

    Algorithme:

    IF=1

    I1

    STOSB Pasd'oprande

    Copiel'octetcontenudansALdansES:[DI].MetjourSI.

    Algorithme:

    ES:[DI]=ALsiDF=0alors

    DI=DI+1sinon

    DI=DI1

    Exemple:

    #make_COM#ORG100h

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 56/59

    LEADI,a1MOVAL,12hMOVCX,5

    REPSTOSB

    RET

    a1DB5dup(0)

    C Z S O P Ainchangs

    STOSW Pasd'oprande

    Copiel'octetcontenudansAXdansES:[DI].MetjourSI.

    Algorithme:

    ES:[DI]=AXsiDF=0alors

    DI=DI+2sinon

    DI=DI2

    Exemple:

    #make_COM#ORG100h

    LEADI,a1MOVAX,1234hMOVCX,5

    REPSTOSW

    RET

    a1DW5dup(0)

    C Z S O P Ainchangs

    Soustraction.

    Algorithme:

    oprande1=oprande1oprande2

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 57/59

    SUBREG,mmoiremmoire,REGREG,REGmmoire,immdiateREG,immdiate

    Exemple:

    MOVAL,5SUBAL,1AL=4

    RET

    C Z S O P Ar r r r r r

    TEST

    REG,mmoiremmoire,REGREG,REGmmoire,immdiateREG,immdiate

    AND(ET)logiqueentretouslesbitsdesdeuxoprandespositionneuniquementlesflags.Lesflagssuivantssontaffects:ZF,SF,PF.Lersultatn'estpasutilis.

    Tabledevrit:

    1AND(ET)1=11AND(ET)0=00AND(ET)1=00AND(ET)0=0

    Exemple:

    MOVAL,00000101bTESTAL,1ZF=0.TESTAL,10bZF=1.RET

    C Z S O P0 r r 0 r

    XCHGREG,mmoiremmoire,REGREG,REG

    Echangelesvaleursdesdeuxoprandes.

    Algorithme:

    oprande1oprande2

    Exemple:

    MOVAL,5MOVAH,2XCHGAL,AHAL=2,AH=5XCHGAL,AHAL=5,AH=2RET

    C Z S O P A

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 58/59

    inchangs

    XLATB Pasd'oprande

    Conversiond'octetdepuisunetable.Copielavaleurdel'octetmmoiredeDS:[BX+ALnonsign]dansleregistreAL.

    Algorithme:

    AL=DS:[BX+ALnonsign]

    Exemple:

    #make_COM#ORG100hLEABX,datMOVAL,2XLATBAL=33h

    RET

    datDB11h,22h,33h,44h,55h

    C Z S O P Ainchangs

    XOR

    REG,mmoiremmoire,REGREG,REGmmoire,immdiateREG,immdiate

    XORlogique(OUexclusif)entretouslesbitsdesdeuxoprandes.Lersultateststockdanslepremieroprande.

    Tabledevrit:

    1XOR(OUexclusif)1=01XOR(OUexclusif)0=10XOR(OUexclusif)1=10XOR(OUexclusif)0=0

    Exemple:

    MOVAL,00000111bXORAL,00000010bAL=00000101bRET

    C Z S O P A0 r r 0 r ?

  • 5/6/2015 8086instructions

    file:///C:/Users/Simmed/AppData/Local/Temp/Rar$EXa0.398/Informatique%20industrielle/8086_instruction_set.html#JNC 59/59

    Copyright2002emu8086,Inc.Tousdroitsrservs.

    http://www.emu8086.com

Recommended