Das MCS-48 Assemblermodul

Inhalt

8048 Befehlsreferenz
8048 Adressierungmodi
Fehlermeldungen


Befehlsreferenz der MCS-48-Familie

A
ADD ADDC ANLANLD
C
CALL CLR CPL
D
DA DEC DIS DJNZ
E
ENENT0
I
ININCINS
J
JBb JC JFf JMP JMPP JNC JNI JNTn
JNZJTFJTnJZ
M
MOV MOVP3 MOVX
N
NOP
O
ORL ORLDOUTL
R
RADRET RETIRETRRL RLC RR RRC
S
SEL STOP STRT SWAP
X
XCH XCHD XRL

Siehe auch: Assemblerreferenz


Adressierungsmodi

In dieser Kurzreferenz werden folgende Kürzel für die einzelnen Adressierungsmodi der MCS48-Prozessoren verwendet:

RnRegister R7 - R0 der aktuell gewählten Registerbank
@RiInternes RAM indirekt adressiert durch R0 oder R1.
#data8-Bit Konstante
addr11-Bit Zieladresse.
P0,P1,P2Ports 0 (nur 8021/22) bis 2
P4...P7Ports 4 bis 7 im externen 8243

Unmittelbare Daten, #data

In den Assembleroptionen können Sie wählen, ob unmittelbare Daten durch ein #-Zeichen gekennzeichnet werden müssen (kompatibel zum 8051-Assembler) oder nicht. Beachten Sie, daß ein #-Zeichen auch zur Kennzeichnung von hexadezimalen Zahlen verwendet werden kann und daß daher eine fehlerhafte Einstellung der zugehörigen Option zu schwer auffindbaren Fehlern führen kann.

Siehe auch: Assemblerreferenz


ADD A,<src-byte>

Beschreibung: ADD addiert die angegebene Byte-Variable zum Akkumulator. Das Ergebnis kommt wieder in den Akkumulator.

Funktion:A := A + <src-byte>

Format:
ADD A,Rn
ADD A,@Ri
ADD A,#data

Flags:Carry bzw. Auxiliary-carry werden gesetzt, wenn ein Übertrag von Bit 7 bzw. Bit 3 stattfindet, andernfalls gelöscht. Bei der Addition von vorzeichenlosen Zahlen zeigt das Carry-Flag einen Überlauf an.

Siehe auch:Der Befehl ADDC
Befehlsreferenz
Adressierungsmodi



ADDC A,<src-byte>

Beschreibung: ADDC addiert die angegebene Byte-Variable und das Carry-Flag zum Akkumulator. Das Ergebnis kommt wieder in den Akkumulator.

Funktion:A := A + C + <src-byte>

Format:
ADDC A,Rn
ADDC A,@Ri
ADDC A,#data

Flags:Carry bzw. Auxiliary-carry werden gesetzt, wenn ein Übertrag von Bit 7 bzw. Bit 3 stattfindet, andernfalls gelöscht. Bei der Addition von vorzeichenlosen Zahlen zeigt das Carry-Flag einen Überlauf an.

Siehe auch:Der Befehl ADD
Befehlsreferenz
Adressierungsmodi



ANL <dest-byte>,<src-byte>

Beschreibung: ANL führt eine bitweise UND-Verknüpfung zwischen den angegebenen Variablen durch und speichert das Ergebnis in <dest-byte>.

Funktion:<dest-byte> := <dest-byte> Ù <src-byte>

Format:
ANL A,Rn
ANL A,@Ri
ANL A,#data
ANL BUS,#data
ANL Pp,#data (p=1,2)

Flags:kein Einfluß

Siehe auch:Die Befehle ORL, XRL
Befehlsreferenz
Adressierungsmodi



ANLD Pp,A

Beschreibung: ANLD führt eine bitweise UND-Verknüpfung zwischen dem 8243-Erweiterungport p und den Akkumulator-Bits 0 bis 3 durch.

Funktion:Pp := Pp Ù A[0..3]

Format:p = 4...7

Flags:kein Einfluß

Siehe auch:Die Befehle ANL, ORLD
Befehlsreferenz
Adressierungsmodi



CALL addr

Beschreibung: CALL ruft ein Unterprogramm an der angegebenen Adresse auf. Der Befehl inkrementiert den PC zweimal, um die Adresse der folgenden Anweisung zu erhalten, dann wird das 12-bit Ergebnis zusammen mit den PSW-Bits 4 bis 7 auf dem Stack abgelegt. Dann wird der PC mit der angegebenen Zieladresse und PC[11] entsprechend der letzten SEL MB-Anweisung geladen.

Funktion:
PC := PC + 2
(SP) := PSW[7...4],PC[11...0]
SP := SP + 1
PC[10..0] := addr
PC[11] := DBF

Flags:kein Einfluß

Siehe auch:Der Befehl JMP
Befehlsreferenz



CLR <dest>

Beschreibung: Das angegebene Ziel wird gelöscht (mit 0 geladen).

Format:
CLR A
CLR flag

Siehe auch:Der Befehl CPL
Befehlsreferenz



CRL A

Beschreibung: Der Akkumulator wird gelöscht (mit 0 geladen).

Funktion:A := 0

Flags:kein Einfluß

Siehe auch:Der Befehl CLR flag
Befehlsreferenz



CLR flag

Beschreibung: Das angegebene Flag wird gelöscht (mit 0 geladen).

Funktion:flag := 0

Format:flag kann sein: C, F0, F1.

Siehe auch:Der Befehl CLR A
Befehlsreferenz



CPL <dest>

Beschreibung: Das angegebene Ziel wird komplementiert.

Format:
CPL A
CPL flag

Siehe auch:Der Befehl CLR
Befehlsreferenz



CPL A

Beschreibung: Der Akkumulator wird komplementiert (Einerkomplement), d.h. jedes 0-Bit wird zu einem 1-Bit und umgekehrt.

Funktion:A := ¬ A

Flags:kein Einfluß

Siehe auch:Der Befehl CPL flag
Befehlsreferenz



CPL flag

Beschreibung: Das angegebene Flag wird komplementiert.

Funktion:flag := ¬ flag

Format:flag kann sein: C, F0, F1.

Siehe auch:Der Befehl CPL A
Befehlsreferenz



DA A

Beschreibung: DA A gleicht den Acht-Bit-Wert im Akku nach einer vorangegangenen Addition (ADD oder ADDC) zweier Werte im gepackten BCD-Format wieder zu einer BCD-Zahl (mit zwei Ziffern) ab.
Wenn die Akkumulator-Bits 0 bis 3 größer als 9 sind (d.h. 0xAh...0xFh), oder wenn das AC-Flag gesetzt ist, wird 6 zum Akkumulator addiert. Dies erzeugt das gewünschte Digit im unteren Nibble. Diese Addition setzt das Carry-Flag, falls ein Übertrag von Bit 7 des Akkus entsteht (falls nicht, behält das Carry-Flag seinen alten Zustand).
Ist das Carry-Flag gesetzt oder sind die oberen vier Akkumulator-Bits größer als 9 (0Axh...0Fxh), wird 6 zur oberen Hälfte des Akkumulators addiert. Dies erzeugt das gewünschte BCD-Digit im oberen Nibble des Akkus. Auch diese Addition setzt das Carry-Flag, falls ein Übertrag von Bit 7 des Akkus entsteht (falls nicht, behält das Carry-Flag seinen alten Zustand).
Nach der Operation zeigt ein gesetztes Carry-Flag an, daß die Summe der ursprünglichen zwei BCD-Variablen größer als 99 war.

Funktion:siehe Text

Flags:außer Carry (s.o.) kein Einfluß

Siehe auch:Befehlsreferenz



DEC <byte>

Beschreibung: DEC dekrementiert die angegebene Variable um 1. War der ursprüngliche Wert 0, so findet ein Unterlauf auf 0FFh statt.

Funktion:<byte> := <byte> - 1

Format:
DEC A
DEC Rn

Flags:kein Einfluß.

Siehe auch:Der Befehl INC
Befehlsreferenz
Adressierungsmodi



DIS <IRQ>

Beschreibung: DIS schaltet die Interrupts der angegebenen Interrupt-Quelle ab.

Format:
DIS I
DIS TCNTI

Flags:kein Einfluß.

Siehe auch:Der Befehl EN
Befehlsreferenz



DJNZ Rn,<addr>

Beschreibung: DJNZ dekrementiert das angegebene Register Rn um 1 und verzweigt zum Sprungziel, sofern das Ergebnis nicht Null ist. Das Sprungziel muß in der gleichen 256-Byte Seite liegen wie das zweite Byte des DJNZ-Befehls.

Funktion:
PC := PC + 1
Rn := Rn - 1
IF Rn ¹ 0 THEN
  PC[7...0] := addr[7...0]

Flags:kein Einfluß

Siehe auch:Die Befehe JNZ, DEC
Befehlsreferenz
Adressierungsmodi



EN <IRQ>

Beschreibung: DIS schaltet die Interrupts der angegebenen Interrupt-Quelle ein.

Format:
EN I
EN TCNTI

Flags:kein Einfluß.

Siehe auch:Der Befehl DIS
Befehlsreferenz



ENT0 CLK

Beschreibung: ENT0 CLK gibt die internen Taktimpulse am Pin T0 aus. Die Funktion wird durch einen Reset aufgehoben.

Flags:kein Einfluß.

Siehe auch:Befehlsreferenz



IN A,Pp

Beschreibung: Die an Port p anliegenden Daten werden in den Akkumulator eingelesen. Beim 8021 bewirkt der Befehl IN A,P2, daß die Bits P2[3...0] in die Akku-Bits A[3..0] gelesen werden, wobei A[7...4] gelöscht wird.

Funktion:A := Pp

Format:p = 1, 2, 0 (nur 8021/22)

Flags:kein Einfluß.

Siehe auch:Die Befehle INS, OUTL
Befehlsreferenz



INC <byte>

Beschreibung: INC inkrementiert die angegebene Variable um 1. War der ursprüngliche Wert 0FFh, so findet ein Überlauf auf 0 statt.

Funktion:<byte> := <byte> + 1

Format:
INC A
INC Rn
INC @Ri

Flags:kein Einfluß.

Siehe auch:Der Befehl DEC
Befehlsreferenz
Adressierungsmodi



INS A,BUS

Beschreibung: Die am BUS-Port anliegenden Daten werden in den Akkumulator eingelesen.

Funktion:A := BUS

Flags:kein Einfluß.

Siehe auch:Die Befehle IN, OUTL
Befehlsreferenz



JBb <addr>

Beschreibung: JB verzweigt zum Sprungziel, sofern das angegebene Akkumulatorbit b gesetzt ist. Das Sprungziel muß in der gleichen 256-Byte Seite liegen wie das zweite Byte des Befehls. Ist die Option «Bedingte Sprünge über Seitengrenzen» gewählt, darf die Zieladresse in einer beliebigen Seite liegen, der Assembler übersetzt dann den Befehl als
  JBb $+4
  JMP $+4
  JMP <addr>
Gegebenenfalls fügt der Assembler NOP-Befehle ein, bis eine korrekte Adressierung möglich ist.

Funktion:
PC := PC + 1
IF A[b] = 1 THEN
  PC[7...0] := addr[7...0]

Format:b = 0...7

Flags:kein Einfluß

Siehe auch:Die Befehe JC, JMP
Befehlsreferenz
Adressierungsmodi



JC <addr>

Beschreibung: JC verzweigt zum Sprungziel, sofern das Carry-Flag gesetzt ist. Das Sprungziel muß in der gleichen 256-Byte Seite liegen wie das zweite Byte des Befehls. Ist die Option «Bedingte Sprünge über Seitengrenzen» gewählt, darf die Zieladresse in einer beliebigen Seite liegen, der Assembler übersetzt dann den Befehl als
  JNC $+4
  JMP <addr>
Gegebenenfalls fügt der Assembler NOP-Befehle ein, bis eine korrekte Adressierung möglich ist.

Funktion:
PC := PC + 1
IF C = 1 THEN
  PC[7...0] := addr[7...0]

Flags:kein Einfluß

Siehe auch:Die Befehe JNC, JMP
Befehlsreferenz
Adressierungsmodi



JFf <addr>

Beschreibung: JFf verzweigt zum Sprungziel, sofern das Flag Ff gesetzt ist. Das Sprungziel muß in der gleichen 256-Byte Seite liegen wie das zweite Byte des Befehls. Ist die Option «Bedingte Sprünge über Seitengrenzen» gewählt, darf die Zieladresse in einer beliebigen Seite liegen, der Assembler übersetzt dann den Befehl als
  JFf $+4
  JMP $+4
  JMP <addr>
Gegebenenfalls fügt der Assembler NOP-Befehle ein, bis eine korrekte Adressierung möglich ist.

Funktion:
PC := PC + 1
IF Ff = 1 THEN
  PC[7...0] := addr[7...0]

Format:f = 0, 1

Flags:kein Einfluß

Siehe auch:Die Befehe JC, JMP
Befehlsreferenz
Adressierungsmodi



JMP addr

Beschreibung: JMP verzweigt zu angegebenen Adresse. Der Befehl lädt den PC mit der angegebenen Zieladresse und PC[11] entsprechend der letzten SEL MB-Anweisung.

Funktion:
PC[10..0] := addr
PC[11] := DBF

Flags:kein Einfluß

Siehe auch:Der Befehl CALL
Befehlsreferenz



JMPP @A

Beschreibung: JMPP läde den Akkumulatorinhalt in die Befehlszähler-Bits 0...7, springt also an die im Akkumulator genannte Adresse innerhalb der aktuellen Seite.

Funktion:
PC[7...0] := A

Flags:kein Einfluß

Siehe auch:Der Befehl JMP
Befehlsreferenz



JNC <addr>

Beschreibung: JNC verzweigt zum Sprungziel, sofern das Carry-Flag nicht gesetzt ist. Das Sprungziel muß in der gleichen 256-Byte Seite liegen wie das zweite Byte des Befehls. Ist die Option «Bedingte Sprünge über Seitengrenzen» gewählt, darf die Zieladresse in einer beliebigen Seite liegen, der Assembler übersetzt dann den Befehl als
  JC $+4
  JMP <addr>
Gegebenenfalls fügt der Assembler NOP-Befehle ein, bis eine korrekte Adressierung möglich ist.

Funktion:
PC := PC + 1
IF C = 0 THEN
  PC[7...0] := addr[7...0]

Flags:kein Einfluß

Siehe auch:Die Befehe JC, JMP
Befehlsreferenz
Adressierungsmodi



JNI <addr>

Beschreibung: JNI verzweigt zum Sprungziel, sofern Low-Pegel am Interrupt-Pin anliegt. Das Sprungziel muß in der gleichen 256-Byte Seite liegen wie das zweite Byte des Befehls. Ist die Option «Bedingte Sprünge über Seitengrenzen» gewählt, darf die Zieladresse in einer beliebigen Seite liegen, der Assembler übersetzt dann den Befehl als
  JNI $+4
  JMP $+4
  JMP <addr>
Gegebenenfalls fügt der Assembler NOP-Befehle ein, bis eine korrekte Adressierung möglich ist.

Funktion:
PC := PC + 1
IF INT = 0 THEN
  PC[7...0] := addr[7...0]

Flags:kein Einfluß

Siehe auch:Die Befehe JNTn, JMP
Befehlsreferenz
Adressierungsmodi



JNTn <addr>

Beschreibung: JNT verzweigt zum Sprungziel, sofern Low-Pegel am Pin Tn anliegt. Das Sprungziel muß in der gleichen 256-Byte Seite liegen wie das zweite Byte des Befehls. Ist die Option «Bedingte Sprünge über Seitengrenzen» gewählt, darf die Zieladresse in einer beliebigen Seite liegen, der Assembler übersetzt dann den Befehl als
  JTn $+4
  JMP <addr>
Gegebenenfalls fügt der Assembler NOP-Befehle ein, bis eine korrekte Adressierung möglich ist.

Funktion:
PC := PC + 1
IF Tn = 0 THEN
  PC[7...0] := addr[7...0]

Format:n = 0, 1

Flags:kein Einfluß

Siehe auch:Die Befehe JTn, JMP
Befehlsreferenz
Adressierungsmodi



JNZ <addr>

Beschreibung: JNZ verzweigt zum Sprungziel, sofern der Akkuinhalt nicht Null ist. Das Sprungziel muß in der gleichen 256-Byte Seite liegen wie das zweite Byte des Befehls. Ist die Option «Bedingte Sprünge über Seitengrenzen» gewählt, darf die Zieladresse in einer beliebigen Seite liegen, der Assembler übersetzt dann den Befehl als
  JZ $+4
  JMP <addr>
Gegebenenfalls fügt der Assembler NOP-Befehle ein, bis eine korrekte Adressierung möglich ist.

Funktion:
PC := PC + 1
IF A ¹ 0 THEN
  PC[7...0] := addr[7...0]

Flags:kein Einfluß

Siehe auch:Die Befehe JZ, JMP
Befehlsreferenz
Adressierungsmodi



JTn <addr>

Beschreibung: JT verzweigt zum Sprungziel, sofern High-Pegel am Pin Tn anliegt. Das Sprungziel muß in der gleichen 256-Byte Seite liegen wie das zweite Byte des Befehls. Ist die Option «Bedingte Sprünge über Seitengrenzen» gewählt, darf die Zieladresse in einer beliebigen Seite liegen, der Assembler übersetzt dann den Befehl als
  JNTn $+4
  JMP <addr>
Gegebenenfalls fügt der Assembler NOP-Befehle ein, bis eine korrekte Adressierung möglich ist.

Funktion:
PC := PC + 1
IF Tn = 1 THEN
  PC[7...0] := addr[7...0]

Format:n = 0, 1

Flags:kein Einfluß

Siehe auch:Die Befehe JNTn, JMP
Befehlsreferenz
Adressierungsmodi



JTF <addr>

Beschreibung: JTF verzweigt zum Sprungziel, sofern das Timer-Flag gesetzt ist, d.h. es einen Zeitgeber-Überlauf gegeben hat. Der Befehl löscht ein gesetztes Timer-Flag. Das Sprungziel muß in der gleichen 256-Byte Seite liegen wie das zweite Byte des Befehls. Ist die Option «Bedingte Sprünge über Seitengrenzen» gewählt, darf die Zieladresse in einer beliebigen Seite liegen, der Assembler übersetzt dann den Befehl als
  JTF $+4
  JMP $+4
  JMP <addr>
Gegebenenfalls fügt der Assembler NOP-Befehle ein, bis eine korrekte Adressierung möglich ist.

Funktion:
PC := PC + 1
IF TF = 1 THEN
  PC[7...0] := addr[7...0]
  TF := 0

Flags:kein Einfluß

Siehe auch:Die Befehe JFf, JMP
Befehlsreferenz
Adressierungsmodi



JZ <addr>

Beschreibung: JZ verzweigt zum Sprungziel, sofern der Akkuinhalt Null ist. Das Sprungziel muß in der gleichen 256-Byte Seite liegen wie das zweite Byte des Befehls. Ist die Option «Bedingte Sprünge über Seitengrenzen» gewählt, darf die Zieladresse in einer beliebigen Seite liegen, der Assembler übersetzt dann den Befehl als
  JNZ $+4
  JMP <addr>
Gegebenenfalls fügt der Assembler NOP-Befehle ein, bis eine korrekte Adressierung möglich ist.

Funktion:
PC := PC + 1
IF A = 0 THEN
  PC[7...0] := addr[7...0]

Flags:kein Einfluß

Siehe auch:Die Befehe JNZ, JMP
Befehlsreferenz
Adressierungsmodi



MOV <dest-byte>,<src-byte>

Beschreibung: MOV kopiert den Inhalt von <src-byte> nach <dest-byte>.

Funktion:<dest-byte> := <src-byte>

Format:
MOV A,#data
MOV A,PSW
MOV A,Rrr = 0...7
MOV A,@Rrr = 0, 1
MOV A,T
MOV PSW,A
MOV Rr,Ar = 0...7
MOV Rr,#datar = 0...7
MOV @Rr,Ar = 0, 1
MOV @Rr,#datar = 0, 1
MOV T,A
MOV A,Ppp = 4...7
MOV Pp,Ap = 4...7
MOV A,@A

Flags:kein Einfluß

Bemerkung:MOV A,@A liest das durch PC[11.8]A[7...0] adressierte Byte aus dem Programmspeicher in den Akku. Befindet sich der Befehl in Zelle 255 einer 256-Byte Seite, so adressiert @A ein Byte in der darauffolgenden Seite.

Siehe auch:Der Befehl MOVP3
Befehlsreferenz
Adressierungsmodi



MOVP3 A,@A

Beschreibung: MOVP3 kopiert ein Datenbyte aus dem Programmspeicher in den Akkumulator. Die Adresse befindet sich in der Speicherseite 3 und ergibt sich aus der Summe aus Akkumulator und 0300h.

Funktionb:A := (0300h+A)

Flags:kein Einfluß

Siehe auch:Der Befehl MOVX
Befehlsreferenz



MOVX <dest-byte>,<src-byte>

Beschreibung: MOVX kopiert Daten zwischen dem Akkumulator und einem externen Datenspeicher. Das RegisterR0 oder R1 liefert eine 8-Bit-Adresse, die während des Schreib-/Lesezyklus gemultiplext mit den Daten am BUS-Port ausgegeben wird.

Funktion:<dest-byte> := <src-byte>

Format:
MOVX A,@Ri
MOVX @Ri,A

Flags:kein Einfluß

Siehe auch:Der Befehl MOVP3
Befehlsreferenz



NOP

Beschreibung: NOP tut einen Zyklus lang gar nichts (abgesehen davon, daß der PC wie bei jedem anderen Befehl auch inkrementiert wird).

Flags:kein Einfluß

Siehe auch:Befehlsreferenz



ORL <dest-byte>,<src-byte>

Beschreibung: ORL führt eine bitweise ODER-Verknüpfung zwischen den angegebenen Variablen durch und speichert das Ergebnis in <dest-byte>.

Funktion:<dest-byte> := <dest-byte> Ú <src-byte>

Format:
ORL A,Rn
ORL A,@Ri
ORL A,#data
ORL BUS,#data
ORL Pp,#data (p=1,2)

Flags:kein Einfluß

Siehe auch:Die Befehle ANL, XRL
Befehlsreferenz
Adressierungsmodi



ORLD Pp,A

Beschreibung: ORLD führt eine bitweise ODER-Verknüpfung zwischen dem 8243-Erweiterungport p und den Akkumulator-Bits 0 bis 3 durch.

Funktion:Pp := Pp Ú A[0..3]

Format:p = 4...7

Flags:kein Einfluß

Siehe auch:Die Befehle ORL, ANLD
Befehlsreferenz
Adressierungsmodi



OUTL <dest>,A

Beschreibung: Die Daten im Akkumulator werden an den Port <dest> ausgegeben und zwischengespeichert. Ist <dest> = BUS, dann werden die Daten von jedem Befehl, der den Datenbus betrifft (außer INS) überschreiben.

Funktion:<dest> := A

Format:
OUTL P0,Anur 8021/22
OUTL P1,A
OUTL P2,A
OUTL BUS,Anicht 8021/22

Flags:kein Einfluß.

Siehe auch:Die Befehle INS, IN
Befehlsreferenz



RAD

Beschreibung: Die im Ergebnisregister des A/D-Wandlers enthaltenen Daten werden in den Akku geladen.

Funktion:A := A/D-Ergebnis

Bemerkung:nur im 8022 verfügbar

Flags:kein Einfluß

Siehe auch:Befehlsreferenz



RET

Beschreibung: Rückkehr aus einem Unterprogramm. Der Befehlszähler PC wird vom Stapel geholt und SP entsprechend vermindert. Dies bedeutet i.a., daß die Programmausführung mit der auf CALL folgenden Anweisung fortgesetzt wird. Die Bits 4 bis 7 des PSW werden nicht vom Stapel geladen.

Funktion:
SP := SP - 1
PC[11...0] := (SP)

Flags:kein Einfluß

Siehe auch:Die Befehle RETR, CALL, RETI
Befehlsreferenz



RETI

Beschreibung: Rückkehr aus einem Interrupt-Routine. Der Befehlszähler PC wird vom Stapel geholt und SP entsprechend vermindert. Dies bedeutet, daß die Programmausführung mit der auf den Interrupt-Request folgenden Anweisung fortgesetzt wird. Weiterhin wird der Zustand der Interrupt-Logik wiederhergestellt, so daß nun ein weiterer Interrupt bearbeitet werden kann.

Funktion:
SP := SP - 1
PC[11...0] := (SP)

Flags:kein Einfluß

Bemerkung:nur im 8022 verfügbar

Siehe auch:Der Befehl RET
Befehlsreferenz



RETR

Beschreibung: Rückkehr aus einem Interrupt-Routine. Der Befehlszähler PC und die PSW-Bits 4 bis 7 werden vom Stapel geholt und SP entsprechend vermindert. Dies bedeutet, daß die Programmausführung mit der auf den Interrupt-Request folgenden Anweisung fortgesetzt wird. Weiterhin wird der Zustand der Interrupt-Logik wiederhergestellt, so daß nun ein weiterer Interrupt bearbeitet werden kann.

Funktion:
SP := SP - 1
PC[11...0] := (SP)[11...0]
PSW[7...4] := (SP)[15..12]

Flags:kein Einfluß

Bemerkung:nicht im 8021/22 verfügbar

Siehe auch:Der Befehl RET
Befehlsreferenz



RL A

Beschreibung: Die acht Akkumulator-Bits werden um eine Position nach links rotiert. Hierbei kommt Bit 7 an die Position von Bit 0.

Funktion:
tmp := A[7]
A[7...1] := A[6...0]
A[0] := tmp

Flags:kein Einfluß

Siehe auch:Die Befehle RLC, RR, RRC
Befehlsreferenz



RLC A

Beschreibung: Die acht Akkumulator-Bits und das Carry-Flag werden um eine Position nach links rotiert. Hierbei kommt Bit 7 des Akkus ins Carry-Flag und der Inhalt des Carry-Flags an die Position von Bit 0.

Funktion:
tmp := C
C := A[7]
A[7...1] := A[6...0]
A[0] := tmp

Flags:kein Einfluß

Siehe auch:Die Befehle RL, RR, RRC
Befehlsreferenz



RR A

Beschreibung: Die acht Akkumulator-Bits werden um eine Position nach rechts rotiert. Hierbei kommt Bit 0 an die Position von Bit 7.

Funktion:
tmp := A[0]
A[6...0] := A[7...1]
A[7] := tmp

Flags:kein Einfluß

Siehe auch:Die Befehle RRC, RL, RLC
Befehlsreferenz



RRC A

Beschreibung: Die acht Akkumulator-Bits und das Carry-Flag werden um eine Position nach rechts rotiert. Hierbei kommt das Carry-Flag in Bit 7 des Akkus und Bit 0 ins Carry-Flag.

Funktion:
tmp := C
C := A[0]
A[6...0] := A[7...1]
A[7] := tmp

Flags:kein Einfluß

Siehe auch:Die Befehle RR, RL, RLC
Befehlsreferenz



SEL <bank>

Beschreibung: Die/der angegebene Speicherbank/Registerbank/Eingang wird ausgewählt.

Format:
SEL AN0nur 8022: A/D 0 wählen, Wandlung starten
SEL AN1nur 8022: A/D 1 wählen, Wandlung starten
SEL MB0nicht 8021/22: Speicherbank 0 wählen
SEL MB1nicht 8021/22: Speicherbank 1 wählen
SEL RB0nicht 8021/22: Registerbank 0 wählen
SEL RB1nicht 8021/22: Registerbank 1 wählen

Flags:kein Einfluß

Siehe auch:Die Befehle CALL, JMP, RAD
Befehlsreferenz



STOP TCNT

Beschreibung: Die Zeit- bzw. Ereigniszählung im Timer-Register T wird angehalten.

Flags:kein Einfluß

Siehe auch:Der Befehl STRT
Befehlsreferenz



STRT <counter>

Beschreibung: Der Zeit- oder Ereigniszählung im Timer-Register T wird gestartet. Im Falle der Zeitzählung (STRT T) wird der interne «durch 32»-Vorteiler gelöscht.

Format:
STRT CNTEreigniszählung an Pin T1
STRT TZeitmessung, T=T+1 jeden 32. Zyklus

Flags:kein Einfluß

Siehe auch:Der Befehl STOP
Befehlsreferenz



SWAP A

Beschreibung: Das obere und das untere Akkumulator-Nibble (Halbbyte) werden vertauscht..

Funktion:A[3...0] « A[7...4]

Flags:kein Einfluß

Siehe auch:Befehlsreferenz



XCH A,@Rr

Beschreibung: Der Inhalt des Akkumulators und der durch Rr adressierten Speicherzelle werden vertauscht.

Funktion:A « (Rr)

Format:r = 0, 1

Flags:kein Einfluß

Siehe auch:Der Befehl XCHD
Befehlsreferenz



XCHD A,@Rr

Beschreibung: Die untere Hälfte des Akkumulators und des durch Rr angegebenen Bytes werden vertauscht.

Funktion:A[3...0] « (Rr)[3...0]

Format:r = 0, 1

Flags:kein Einfluß

Siehe auch:Der Befehl XCH
Befehlsreferenz



XRL A,<src-byte>

Beschreibung: XRL führt eine bitweise EXCLUSIV-ODER-Verknüpfung zwischen A und der angegebenen Variablen durch und speichert das Ergebnis im Akkumulator.

Funktion:A := A xor <src-byte>

Format:
XRL A,Rn
XRL A,@Ri
XRL A,#data

Flags:kein Einfluß

Siehe auch:Die Befehle ANL, ORL
Befehlsreferenz
Adressierungsmodi



Prozessorabhängige Fehlermeldungen

Im folgenden sind die assemblerspezifischen Fehlermeldungen aufgelistet. Eine Liste aller allgemeinen Fehlermeldungen finden Sie hier.

E10065 - Syntaxfehler
Der Befehl ist korrekt, jedoch liegt ein Fehler bei den Parametern vor.

E10066 - Kein Parameter erwartet
Der verwendete Befehl benötigt keinen Parameter, Sie haben jedoch einen Parameter angegeben.

E10067 - Parameter erwartet
Der verwendete Befehl erfordert einen Parameter, es wurde aber keiner angegeben.

E10068 - Ausdruck außerhalb des zulässigen Wertebereichs
Der verwendete Konstanten-Ausdruck liefert einen Wert außerhalb des zulässigen Bereichs zurück.

E10069 - Zweiter Parameter erwartet
Der verwendete Befehl erfordert einen zweiten Parameter, es wurde aber nur einer angegeben.

E10070 - Zu viele Parameter
Es wurden mehr Parameter angegeben, als der Befehl vorsieht.

E10071 - Argument hier nicht zulässig
Einer der verwendeten Parameter ist bei diesem Befehl nicht zulässig.

E10072 - Sprungziel muß in der gleichen 256 Byte-Seite liegen
Die gewünschte Zieladresse kann mit einem bedingten Sprungbefehl nicht erreicht werden. Schalten Sie gegebenenfalls die Option für bedingte Sprünge über Seitengrenzen ein.

E10073 - Das Sprungziel liegt außerhalb des Adressbereichs des Prozessors
Die gewünschte Zieladresse liegt außerhalb des ROM-Adressbereichs des gewählten Prozessors. Möchten Sie einen 8048/8049/8748/8749 mit externem ROM betreiben, dann wählen Sie 8035/8039 als Prozessor aus!

E10074 - Diese Anweisung ist bei dem gewählten Prozessor nicht verfügbar
Der verwendete Befehl ist auf dem in den Assembleroptionen gewählten Prozessor nicht implementiert.