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