Programmieren
 
 
 
 
 
CPU 8086
 
 
 
 
 
Assembler
 
 
.. Assemblerbefehle 8086
 
 

 
 
 
 
 
 
 
Arithmetische Befehle
 
 
 
AAA
ASCII-Anpassung für Addition
 
 
 
AAS
ASCII-Anpassung für Subtraktion
 
 
 
AAM
ASCII-Anpassung für Multiplikation
 
 
 
AAD
ASCII-Anpassung für Division
 
 
 
DAA
Dezimale Anpassung für Addition
 
 
 
DAS
Dezimale Anpassung für Subtraktion
 
 
 
ADC
Addiere unter Beachtung des Übertrags
 
 
 
ADD
Addiere ohne Beachtung des Übertrags
 
 
 
SBB
Subtrahiere mit Borgen
 
 
 
SUB
Subtrahiere ohne Borgen
 
 
 
DIV
Division (ohne Vorzeichen)
 
 
 
IDIV
Division (mit Vorzeichen)
 
 
 
MUL
Multiplikation (ohne Vorzeichen)
 
 
 
IMUL
Multiplikation (mit Vorzeichen)
 
 
 
INC
Incrementiere (Erhöhe um 1)
 
 
 
DEC
Decrementiere (Vermindere um 1)
 
 
 
CBW
Wandle ein Byte (AL) in ein Wort (AX) um
 
 
 
CWD
Wandle ein Wort (AX) in ein Doppelwort (DX:AX) um
 
 
 
 
 
 
 
 
 
Logische Befehle
 
 
 
AND
Logisches UND
 
 
 
OR
Logisches ODER
 
 
 
XOR
Exclusives ODER
 
 
 
NEG
Zweierkomplement bilden
 
 
 
NOT
Einerkomplement bilden
 
 
 
TEST
Vergleichen durch logisch UND
 
 
 
CMP
Vergleiche Ziel mit Quelle
 
 
 
 
 
 
 
 
 
Transferbefehle
 
 
 
MOV
Übertrage Byte oder Wort zum Ziel von der Quelle
 
 
 
PUSH
Übertrage ein Word zum Stapel
 
 
 
PUSHA
Übertrage alle Registerinhalte auf den Stapel
 
 
 
POPA
Hole alle Registerinhalte vom Stapel
 
 
 
PUSHI
Übertrage d. indirekt angeg. Wort, Byte zum Stapel
 
 
 
POP
Hole ein Word vom Stapel
 
 
 
PUSHF
Übertrage Statusregister zum Stapel
 
 
 
POPF
Hole Statusregister vom Stapel
 
 
 
LAHF
Lade Reg. AH mit dem Low Bytes des Flaggenreg.
 
 
 
SAHF
Speichere Reg. AH im Low Bytes des Flaggenreg.
 
 
 
XCHG
Austauschen
 
 
 
XLAT
Übersetzen
 
 
 
LEA
Offsetadresse laden
 
 
 
LDS
Zeiger, einschliesslich DS laden
 
 
 
LES
Zeiger, einschliesslich ES laden
 
 
 
IN
Byte oder Word vom I/O Speicher lesen
 
 
 
OUT
Byte oder Word zum I/O-Speicher schreiben
 
 
 
 
 
 
 
 
 
Flaggen
 
 
 
CLC
Lösche Carry-Flag
 
 
 
STC
Setze das Carry-Flag
 
 
 
CMC
Komplementiere Carry-Flag
 
 
 
CLD
Lösche Direction-Flag
 
 
 
STD
Setze das Direction-Flag
 
 
 
CLI
Lösche Interrupt-Flag
 
 
 
STI
Setze das Interrupt-Flag
 
 
 
 
 
 
 
 
 
Verzweigungen und Sprünge
 
 
 
JMP
Unbedinger Sprung
 
 
 
CALL
Sprung zu einem Unterprogramm
 
 
 
RET
Rücksprung aus Unterprogramm
 
 
 
INT
Software-Interrupt aufrufen
 
 
 
INTO
Interrupt bei gesetztem Overflow-Flag
 
 
 
IRET
Rücksprung von einem Interrput-Serviceprogramm
 
 
 
 
 
 
 
 
JC
Sprung wenn Carry-Flag gesetzt / C=1
 
 
 
JNAE
Sprung bei nicht oberhalb oder gleich
 
 
 
JB
Sprung bei unterhalb von
 
 
 
JNC
Sprung wenn Carry-Flag gelöscht / C=0
 
 
 
JAE
Sprung bei oberhalb oder gleich
 
 
 
JNB
Sprung bei nicht unterhalb
 
 
 
 
 
 
 
 
JA
Sprung bei oberhalb von
 
 
 
JNA
Sprung bei nicht grösser
 
 
 
JBE
Sprung bei unterhalb oder gleich
 
 
 
JNBE
Sprung bei nicht unterhalb oder gleich
 
 
 
 
 
 
 
 
JZ
Sprung wenn Zero-Flag gesetzt / Z=1
 
 
 
JE
Sprung bei gleich Null
 
 
 
JNZ
Sprung wenn Zero-Flag gelöscht / Z=0
 
 
 
JNE
Sprung bei ungleich
 
 
 
 
 
 
 
 
JO
Sprung wenn Overflow-Flag gesetzt /  O=1
 
 
 
JNO
Sprung wenn Overflow-Flag gelöscht / O=0
 
 
 
JS
Sprung wenn Sign-Flag gesetzt /  S=1
 
 
 
JNS
Sprung wenn Sign-Flag gelöscht / S=0
 
 
 
 
 
 
 
 
JG
Sprung bei grösser
 
 
 
JNLE
Sprung bei nicht kleiner oder gleich
 
 
 
JLE
Sprung bei kleiner oder gleich
 
 
 
JNG
Sprung bei nicht grösser
 
 
 
JGE
Sprung bei grösser oder gleich
 
 
 
JNL
Sprung bei nicht kleiner
 
 
 
JL
Sprung bei kleiner
 
 
 
JNGE
Sprung bei nicht grösser oder gleich
 
 
 
 
 
 
 
 
JP
Sprung wenn Parity-Flagge gesetzt /  P=1
 
 
 
JPE
Sprung bei gerader Parität
 
 
 
JNP
Sprung wenn Parity-Flagge gelöscht / P=0
 
 
 
JPO
Sprung bei ungerader Parität
 
 
 
JCXZ
Sprung wenn Register CX=0
 
 
 
 
 
 
 
 
 
Iterationssprünge
 
 
 
LOOP
Decrementiere CX, Sprung solange CX nicht Null
 
 
 
LOOPZ
Decrem.CX, Sprung solange (CX nicht Null und Z=1)
 
 
 
LOOPE
... wie LOOPZ
 
 
 
LOOPNZ
Decrem.CX, Sprung solange (CX nicht Null und Z=0)
 
 
 
LOOPNE
... wie LOOPNZ
 
 
 
 
 
 
 
 
 
Schieben und Rotieren
 
 
 
RCL
Links rotieren durch das Carry-Flag
 
 
 
RCR
Rechts rotieren durch das Carry-Flag
 
 
 
ROL
Rotiere nach links
 
 
 
ROR
Rotiere nach rechts
 
 
 
SAL
Schiebe arithmetisch nach links
 
 
 
SHL
Schiebe logisch nach links
 
 
 
SAR
Schiebe arithmetisch nach rechts
 
 
 
SHR
Schiebe logisch nach rechts
 
 
 
 
 
 
 
 
 
Blockbefehle
 
 
 
MOVS
Kopiere einen String (Byte oder Wort)
 
 
 
MOVSB
Kopiere String (Byte)
 
 
 
MOVSW
Kopiere String (Word)
 
 
 
CMPS
Vergleiche Zielstring mit Quellstring
 
 
 
SCAS
Vergleiche String mit Inhalt Akkumulator
 
 
 
LODS
Lade String in Akkumulator
 
 
 
STOS
Speichere String aus Akkumulator
 
 
 
 
 
 
 
 
 
Repetier-Präfixe für Blockbefehle
 
 
 
REP
Wiederhole folgenden Blockbefehl, bis (CX)=0
 
 
 
REPE
Wiederhole folgenden Blockbefehl, bis (CX)=0 und Z=1
 
 
 
REPZ
Wiederhole solange Null
 
 
 
REPNE
Wiederhole solange nicht gleich
 
 
 
REPNZ
Wiederhole solange nicht Null
 
 
 
 
 
 
 
 
 
Prozessorsteuerung
 
 
 
ESC
Objektcode und Operand für Coprozessor bereitstellen
 
 
 
HLT
Halt, Arbeit der CPU anhalten
 
 
 
LOCK
An 'Lock'-Pin ein 0-Signal ausgeben
 
 
 
NOP
Keine Operation ausführen
 
 
 
WAIT
Warte, bis 'Test'-Pin aktiv
 
 
 
 
 
 
 
www..de