8086 instructions

59
Toutes les commandes du 8086 Index : AAA AAD AAM AAS ADC ADD AND CALL CBW CLC CLD CLI CMC CMP CMPSB CMPSW CWD DAA DAS DEC DIV HLT IDIV IMUL IN INC INT INTO IRET JA JAE JB JBE JC JCXZ JE JG JGE JL JLE JMP JNA JNAE JNB JNBE JNC JNE JNG JNGE JNL JNLE JNO JNP JNS JNZ JO JP JPE JPO JS JZ LAHF LDS LEA LES LODSB LODSW LOOP LOOPE LOOPNE LOOPNZ LOOPZ MOV MOVSB MOVSW MUL NEG NOP NOT OR OUT POP POPA POPF PUSH PUSHA PUSHF RCL RCR REP REPE REPNE REPNZ REPZ RET RETF ROL ROR SAHF SAL SAR SBB SCASB SCASW SHL SHR STC STD STI STOSB STOSW SUB TEST XCHG XLATB XOR Types d'opérande : REG: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP. SREG: DS, ES, SS et uniquement comme deuxième opérande : CS. mémoire: [BX], [BX+SI+7], variable, etc. (Voir Accès mémoire .) valeur immédiate: 5, 24, 3Fh, 10001101b, etc. Notes : Lorsque deux opérandes sont nécessaires pour une instruction ils sont séparés par une virgule. Par exemple : REG, mémoire Lorsque deux opérandes sont nécessaires, les deux opérandes doivent avoir la même taille (sauf pour les instructions de décalage et de rotation). Par exemple : AL, DL DX, AX m1 DB ?

Upload: l3zawi

Post on 17-Sep-2015

233 views

Category:

Documents


1 download

DESCRIPTION

8086 dakchi zin

TRANSCRIPT

  • 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