Transfer Instructions Internal RAM

Mnemonic

Regi-ster

Incoding

Binary

Inc.

HEX

Affec

ted

Flags

Bytes

Cycles

Function

Funktionsbeschreibung

mov A,Rr

r=0-7

11101rrr

E8+r

P

1

1

Move register Rr contents to accumulator

Lade Akkumulator mit Inhalt von Register  Rr

mov Rr,A

r=0-7

11111rrr

F8+r

-

1

1

Move accumulator contents to register Rr

Lade Register Rr mit Inhalt des Akkumulators

mov A,@Ri

i=0-1

1110011i

E6+i

P

1

1

Move contents of data memory addressed by Ri to accumulator

Lade Akkumulator mit dem Inhalt der internen Datenspeicherzelle, die durch den Inhalt von Ri adressiert ist

mov @Ri,A

i=0-1

1111011i

F6+i

-

1

1

Move accumulator to data memory addressed by Ri

Lade interne Datenspeicherzelle, die durch den Inhalt von Ri adressiert ist, mit dem   Inhalt des Akkumulators

mov A,dadr*

-

11100101

E5

P

2

1

Move contents of direct address to accumulator (mov A,ACC is not a valid instruction

Lade Akkumulator mit Inhalt von dadr

(mov A,ACC ist kein gültiger Befehl)

mov dadr,A

-

11110101

F5

-

2

1

Move accumulator contents to direct address

Lade dadr mit Inhalt des Akkumulators

mov A,#const8

-

01110100

74

P

2

1

Move immediate data to accumulator

Lade Akkumulator mit 8 Bit Konstante

mov Rr,#const8

r=0-7

01111rrr

78+r

-

2

1

Move immediate data to register

Lade Register Rr mit 8 Bit Konstante

mov @Ri,#const8

i=0-1

0111011i

76+i

-

2

1

Move immediate data to data memory addressed by Ri

Lade interne Datenspeicherzelle, die durch den Inhalt von Ri adressiert ist, mit 8 Bit Konstante

mov dadr,#const8

-

01110101

75

-

3

2

Move immediate data to data memory

Lade dadr mit 8 Bit Konstante

mov Rr,dadr

r=0-7

10101rrr

A8+r

-

2

2

Load register Rr with contents of direct address

Lade Register Rr mit Inhalt von dadr

mov dadr,Rr

r=0-7

10001rrr

88+r

-

2

2

Load direct address with contents of register

Lade dadr mit Inhalt von Register Rr

mov dadr,@Ri

i=1-0

1000011i

86+i

-

2

2

Move contents of data memory addressed by Ri to direct address

Lade dadr mit Inhalt der Datenspeicherzelle, die durch Ri adressiert ist

mov @Ri,dadr

i=0-1

1010011i

A6+i

-

2

2

Move data memory to contents of data memory addressed by Ri

Lade insterne Datenspeicherzelle, die durch Ri adressiert ist, mit Inhalt von dadr

mov dadr1,dadr2

-

10000101

85

-

3

2

Move data memory to data memory

Lade dadr1 mit Inhalt von dadr2

mov DPTR,#const16

-

10010000

90

-

3

2

Move immediate data to data pointer

Lade Daten-Pointer DPTR mit 16 Bit Konstante

 

Transfer Instructions External RAM

movx A,@Ri

i=0-1

1110001i

E2+r

P

1

2

Move contents of external data memory addressed by Ri to accumulator

Lade Akkumulator mit dem Inhalt der   externen Datenspeicherzelle, die durch Ri adressiert ist

movx @Ri,A

i=0-1

1111001i

F2+i

-

1

2

Move accumulator contents to external data memory, addressed by Ri

Lade externe Datenspeicherzelle, die durch den Inhalt von Ri adressiert ist,   mit dem Inhalt des Akkumulators

movx A,@DPTR

-

11100000

E0

P

1

2

Move contents of external data memory addressed by DPTR to accumulator

Lade Akkumulator mit dem Inhalt der externen Datenspeicherzelle, die durch DPTR addressiert ist

movx @DPTR,A

-

11110000

F0

-

1

2

Move accumulator contents to external data memory, addressed by DPTR

Lade externe Datenspeicherzelle, die durch den Inhalt von DPTR adressiert ist, mit dem Inhalt des Akkumulators

 

Transfer Instructions Internal RAM

xch A,Rr

r=0-7

11001rrr

C8+r

P

1

1

Exchange accumulator and register contents

Vertausche die Inhalte von Akkumulator und Register Rr

xch A,dadr

-

11000101

C5

P

2

1

Exchange accumulator and data memory contents

Vertausche die Inhalte von Akkumulator und dadr

xch A,@Ri

i=0-1

1100011i

C6+i

P

1

1

Exchange accumulator and data memory addressed by Ri

Vertausche die Inhalte von Akkumulator und der internen Datenspeicherzelle, die durch  den Inhalt von Ri adressiert ist

xchd A,@Ri

i=0-1

1101011i

D6+i

P

1

1

Exchange low order nibble of accumulator and data memory

Vertausche die Inhalte der niederwertigen Halbbytes von Akkumulator und der internen datenspeicherzele, die durch den Inhalt von   Ri adressiert ist

swap A

-

11000100

C4

-

1

1

Exchange nibbles of accumulators

Vertausche die Bytehälften des Akkumulators

push dadr

-

11000000

C0

-

2

2

Increment stack pointer.

Push data memory onto stack

Der Stack-Pointer wird um 1 erhöht

Der Inhalt von dadr wird im Stack abgelegt

pop dadr

-

11010000

D0

-

2

2

Pop data memory form stack

Decrement stack pointer

Übertrage den Inhalt der durch den Stack-Pointer adressierten Datenspeicherzelle   nach dadr; der Stack-Pointer wird um 1 erniedrigt

 

Transfer Instructions ROM

movc A,@A+DPTR

-

10010011

93

P

1

2

Move program memory addressed by accumulator plus DPTR to accumulator

Lade Akkumulator mit dem Inhalt der Programmspeicherzelle, die durch die  Summe von DPTR und Akkumulator adressiert ist

movc A,@A+PC

-

10000011

83

P

1

2

Move programm memory addressed by accumulator plus program counter to accumulator

Lade Akkumulator mit dem Inhalt der Programmspeicherzelle, die durch die  Summe von Programmzähler und  Akkumulator adressiert ist


Boolean Instructions AND

Mnemonic

Regi-ster

Incoding

Binary

Inc.

HEX

Affec

ted

Flags

Bytes

Cycl es

Function

Funktionsbeschreibung

anl A,Rr

r=0-7

01011rrr

58+r

P

1

1

Logical AND accumulator with register contents to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der UND_Verknüpfung von Akkumulator und dem Inhalt von Register Rr

anl A,@Ri

i=0-1

0101011i

56+1

P

1

1

Logical AND accumulator with data memory contents adressed by Ri to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der UND-Verknüpfung von Akkumulator und dem Inhalt der internen Datenspeicherzelle, die durch den Inhalt von Ri adressiert ist

anl A,dadr

-

01010101

55

P

2

1

Logical AND accumulator with contents of direct adress to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der UND-Verknüpfung von Akkumulator und dem Inhalt von dadr

anl A,#const8

-

01010100

54

P

2

1

Logical AND accumulator with immediate data to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der UND-Verknüpfung von Akkumulator und der 8 Bit Konstanten

anl dadr,A

-

01010010

52

-

2

1

Logical AND accumulator with contents of direct adress ti direct adress

Der Inhalt von dadr wird überschrieben durch das Ergebnis der UND-Verknüpfung von Akkumulator und dem Inhalt von dadr

anl dadr,#const8

-

01010011

53

-

3

2

Logical AND contents of direct address and immediate data to direct address

Der Inhalt von dadr wird überschrieben durch das Ergebnis der UND-Verknüpfung der 8 Bit Konstanten mit dem Inhalt von dadr

 

Boolean Instructions OR

orl A,Rr

r=0-7

01001rrr

48+r

P

1

1

Logical OR accumulator with register contents to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der ODER-Verknüpfung von Akkumulator und dem Inhalt von Register Rr

orl A,@Ri

i=0-1

0100011i

46+1

P

1

1

Logical OR accumulator with data memory contents adressed by Ri to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der ODER-Verknüpfung von Akkumulator und dem Inhalt der internen Datenspeicherzelle, die durch den Inhalt von Ri adressiert ist

orl A,dadr

-

01000101

45

P

2

1

Logical OR accumulator with contents of direct adress to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der ODER-Verknüpfung von Akkumulator und dem Inhalt von dadr

orl A,#const8

-

01000100

44

P

2

1

Logical OR accumulator with immediate data to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der ODER-Verknüpfung von Akkumulator und der 8 Bit Konstanten

orl dadr,A

-

01000010

42

-

2

1

Logical OR accumulator with contents of direct adress ti direct adress

Der Inhalt von dadr wird überschrieben durch das Ergebnis der ODER-Verknüpfung von Akkumulator und dem Inhalt von dadr

orl dadr,#const8

-

01000011

43

-

3

2

Logical OR contents of direct address and immediate data to direct address

Der Inhalt von dadr wird überschrieben durch das Ergebnis der ODER-Verknüpfung der 8 Bit Konstanten und dem Inhalt von dadr

 

Boolean Instructions EXCLUSIVE OR

xrl A,Rr

r=0-7

01101rrr

68+r

P

1

1

Logical XOR accumulator with register contents to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der EXODER-Verknüpfung von Akkumulator und dem Inhalt von Register Rr

xrl A,@Ri

i=0-1

0110011i

66+1

P

1

1

Logical XOR accumulator with data memory contents adressed by Ri to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der EXODER-Verknüpfung von Akkumulator und dem Inhalt der internen Datenspeicherzelle, die durch den Inhalt von Ri adressiert ist

xrl A,dadr

-

01100101

65

P

2

1

Logical XOR accumulator with contents of direct adress to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der EXODER-Verknüpfung von Akkumulator und dem Inhalt von dadr

xrl A,#const8

-

01100100

64

P

2

1

Logical XOR accumulator with immediate data to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der EXODER-Verknüpfung von Akkumulator und der 8 Bit Konstanten

xrl dadr,A

-

01100010

62

-

2

1

Logical XOR accumulator with contents of direct adress ti direct adress

Der Inhalt von dadr wird überschrieben durch das Ergebnis der EXODER-Verknüpfung von Akkumulator und dem Inhalt von dadr

xrl dadr,#const8

-

01100011

63

-

3

2

Logical XOR contents of direct address and immediate data to direct address

Der Inhalt von dadr wird überschrieben durch das Ergebnis der EXODER-Verknüpfung der 8 Bit Konstanten und dem Inhalt von dadr

 

Boolean Instructions COMPLEMENT / CLEAR ACC.

cpl A

-

11110100

F4

P

1

1

Complement accumulator

Komplementiere Akkumulator (Einer Komplement)

clr A

-

11100100

E4

P

1

1

Clear accumulator

Lösche den Akkumulator


Instructions for Bit Manipulation TRANSFER / AND / OR / CLEAR / COMPLEMENT / SET

Mnemonic

Regi-

ster

Incoding

Binary

Inc.

HEX

Affec

ted

Flags

Byt-

es

Cyc

les

Function

Funktionsbeschreibung

mov C,badr

-

10100010

A2

CY

2

1

Move contents of bit adress to carry

Lade Carry mit Inhalt von badr

mov badr,C

-

10010010

92

-

2

2

Move contents of carry to bit adress

Lade badr mit Inhalt des Carry

anl C,badr

-

10000010

82

CY

2

2

Logical AND carry with contents of bit adress

Das Carry wird überschrieben durch das Ergebnis der UND-Verknüpfung von Carry und Inhalt von badr

anl C,/badr

-

10110000

B0

CY

2

2

Logical AND carry with complement of contents of bit adress

Das Carry wird überschrieben durch das Ergebnis der UND-Verknüpfung von Carry und dem invertierten Inhalt von badr

orl C,badr

-

01110010

72

CY

2

2

Logical OR carry with contents of bit adress

Das Carry wird überschrieben durch das Ergebnis der ODER-Verknüpfung von Carry und Inhalt von badr

orl c,/badr

-

10100000

A0

CY

2

2

Logical OR carry with complement of contents of bit address

Das Carry wird überschrieben durch das Ergebnis der ODER-Verknüpfung von Carry und dem invertierten Inhalt von badr

clr C

-

11000011

C3

CY

1

1

Clear carry

Carry löschen

clr badr

-

11000010

C2

-

2

1

Clear contents of bit adress

Lösche Inhalt von badr

cpl C

-

10110011

B3

CY

1

1

Complement carry

Carry invertieren

cpl badr

-

10110010

B2

-

2

1

Complement contents of bit address

Invertiere Inhalt von badr

setb C

-

11010011

D3

CY

1

1

Set carry

Carry setzen

setb badr

-

11010010

D2

-

2

1

Set contents of bit address

Setze Inhalt von badr

 

Arithmetic Instructions ADD

add A,Rr

r=0-7

00101rrr

28+r

CY,AC,

OV,P

1

1

Add register contents to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der Addition von Akkumulator und dem Inhalt von Register Rr

add A,@Ri

i=0-1

0010011i

26+1

CY,AC,

OV,P

1

1

Add contents of data memory adressed by Ri to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der Addition von Akkumulator und dem Inhalt der internen Datenspeicherzelle, die durch den Inhalt von Ri adressiert ist

add A,dadr

-

00100101

25

CY,AC,

OV,P

2

1

Add contents of direct adress to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der Addition von Akkumulator und dem Inhalt von dadr

add A,#const8

-

00100100

24

CY,AC,

OV,P

2

1

Add immediate data to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der Addition von Akkumulator und der 8 Bit Konstanten

addc A,Rr

r=0-7

00111rrr

38+r

CY,AC,

OV,P

1

1

Add carry and register contents to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der Addition von Akkumulator und dem Inhalt von Register Rr und dem Inhalt des Carry-Flags

addc A,@Ri

i=0-1

0011011i

36+1

CY,AC,

OV,P

1

1

Add carry and contents of data memory adressed by Ri to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der Addition von Akkumulator, dem Inhalt der internen Datenspeicherzelle, die durch den Inhalt von Ri adressiert ist,  und dem Inhalt des Carry-Flags

addc A,dadr

-

00110101

35

CY,AC,

OV,P

2

1

Add carry and contents of direct adress to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der Addition von Akkumulator dem Inhalt von dadr  und dem Inhalt des Carry-Flags

addc A,#const8

-

00110100

34

CY,AC,

OV,P

2

1

Add carry and immediate data to accumulator

Der Akkumulator wird überschrieben durch das Ergebnis der Addition von Akkumulator der 8 Bit Konstanten  und dem Inhalt des Carry-Flags

inc A

-

00000100

04

P

1

1

Increment accumulator

Zum Inhalt des Akkumulators wird 1 addiert

inc Rr

r=0-7

00001rrr

08+r

-

1

1

Increment register

Zum Inhalt des Registers Rr wird 1 addiert

inc @Ri

i=0-1

0000011i

06+1

-

1

1

Increment data memory contents adressed by Ri

Zum Inhalt der internen Datenspeicherzelle, die durch Ri adressiert ist, wird 1 addiert

inc dadr

-

00000101

05

-

2

1

Increment contents of direct address

Zum Inhalt von dadr wird 1 addiert

inc DPTR

-

10100011

A3

-

1

2

Increment data pointer

Zum Inhalt des Registers DPTR wird 1 addiert

 

Arithmetic Instructions DECIMAL ADJUSTING

da A

-

11010100

D4

CY,P

1

1

Decimal adjust accumulator for addition

Das Ergebnis einer vorangegangenen Addition zweier BCD-Zahlen wird unter Berücksichtigung von Carry und Hilfscarry wieder zu 2 BCD-Ziffern korrigiert


Arithmetic Instructions SUBTRACT

subb A,Rr

r=0-7

10011rrr

98+r

CY,AC,

OV,P

1

1

Subtract sum of register and carry from

accumulator

Die Summe der Inhalte von Carry und Register Rr wird vom Akkumulator subtrahiert. Das Ergebnis überschreibt den Akkumulator

subb A,@Ri

i=0-1

1001011i

96+i

CY,AC,

OV,P

1

1

Subtract sum of contents of data memory

adressed by Ri to accumulator

Die Summe der Inhalte von Carry und der internen Datenspeicherzelle, die durch Ri adressiert ist, wird vom Akkumulator subtrahiert. Das Ergebnis überschreibt den Akkumulator

subb A,dadr

-

10010101

95

CY,AC,

OV,P

2

1

Subtract sum of contents of direct adress

 and carry from accumulator

Die Summe der Inhalte von Carry und der Adresse dadr wird vom Akkumulator subtrahiert. Das Ergebnis überschreibt den Akkumulator

subb A,#const8

-

10010100

94

CY,AC,

OV,P

2

1

Subtract sum of immediate data

and carry form accumulator

Die Summe der Inhalte von Carry und der 8 BitKonstanten wird vom Akkumulator subtrahiert. Das Ergebnis überschreibt den Akkumulator

dec A

-

00010100

14

P

1

1

Decrement accumulator

Vom Inhalt des Akkumulators wird 1 subtrahiert

dec Rr

r=0-7

00011rrr

18+r

-

1

1

Decrement register

Vom Inhalt des Registers Rr wird 1 subtrahiert

dec @Ri

i=0-1

0001011i

16+1

-

1

1

Decrement data memory contents

adressed by Ri

Vom Inhalt der internen Datenspeicherzelle, die durch Ri adressiert ist, wird 1 subtrahiert

dec dadr

-

00010101

15

-

2

1

Decrement contents of direct address

Vom Inhalt von dadr wird 1 subtrahiert

 

Arithmetic Instructions MULTIPLY / DIVIDE

mul AB

-

10100100

A4

CY,OV,

P

1

4

Multiply accumulator with B-register

Die Inhalte von Akkumulator und B-Register werden multipliziert. Das niederwertige Byte des Produktes überschreibt den Akkumulator, das höherwertige Byte das B-Register. Das Carry wird gelöscht, das OV-Bit wird gesetzt, wenn das Ergebnis im B-Register 0 ist

div AB

-

100100100

A4

CY,OV,

P

1

4

Divide accumulator by B-register

Der Inhalt des  Akkumulators wird druch den Inhalt des B-Register dividiert. Der Quotient überschreibt den Akkumulator, der Rest das B-Register. Das Carry wird gelöscht. Bei Division durch 0 wird das OV-Bit gesetzt

 

Shift Instructions

rl A

-

00100011

23

-

1

1

Rotate left without carry

Verschiebe den Inhalt des Akkumulators um 1 Stelle nach links. Die Stelle 27 wird zur Stelle 20  verschoben

rlc A

-

00110011

33

CY,P

1

1

Rotate left through carry

Verschiebe den Inhalt des Akkumulators um 1 Stelle nach links über das Carry. Das Carry wird an die Stelle 20  verschoben

rr A

-

00000011

03

-

1

1

Rotate righ without carry

Verschiebe den Inhalt des Akkumulators um 1 Stelle nach rechts. Die Stelle 20 wird zur Stelle  27 verschoben

rrc A

-

00010011

13

CY,P

1

1

Rotate left through carry

Verschiebe den Inhalt des Akkumulators um 1 Stelle nach rechts. Das Carry wird an die Stelle 27  verschoben

 


Branch Instructions Unconditional Jumps

ljmp adr16

-

00000010

02

-

3

2

Jump to absolute address

Setze das Programm bei der 16 Bit Adresse

adr 16 fort

sjmp rel

-

10000010

80

-

2

2

Jump to relative address

Setze das Programm relativ zum Programmzähler fort

ajmp adr11

-

See Table Branch ins

 

 

-

2

2

Jump to absolute address

Setze das Programm bei der 11 Bit Adresse adr 11 innerhalb der 2K, auf die der Programmzähler zeigt, fort

jmp adr

-

-

-

-

-

-

Generic Jump

ASM 51 generiert einen sjmp, ajmp, ljmp Befehl in Abhängigkeit der Entfernung des Sprungzieles. ( Bei Vorwärts-Referenz wird grundsätzlich LJMP eingesetzt).

jmp @A+DPTR

-

01110011

73

-

1

2

Jump to sum of accumulator and data

 pointer

Setze das Programm an der Adresse fort, die sich aus der Summe von Akkumulator und DPTR ergibt

 

Branch Instructions Conditional Jumps

jc rel

-

01000000

40

-

2

2

Jump if carry is set

Springe relativ zum Programmzähler, wenn Carry = 1 ist

jnc rel

-

01010000

50

-

2

2

Jump if carry is not set

Springe relativ zum Programmzähler, wenn Carry = 0 ist

jb badr,rel

-

00100000

20

-

3

2

Jump if bit is set

Springe relativ zum Programmzähler, wenn der Inhalt von badr = 1 ist

jnb badr,rel

-

00110000

30

-

3

2

Jump if bit is not set

Springe relativ zum Programmzähler, wenn der Inhalt von badr = 0 ist

jnb rel

-

01010000

50

-

3

2

Jump if bit is not set

Springe relativ zum Programmzähler, wenn der Inhalt von badr = 0 ist

jbc badr,rel

-

00010000

10

-

3

2

Jump and clear if bit is set

Springe relativ zum Programmzähler, wenn der Inhalt von badr = 1 ist und lösche den Inhalt von badr

jz rel

-

01100000

60

-

2

2

Jump relative if accumulator is set

Springe relativ zum Programmzähler, wenn der Akkumulator =0 ist

jnz rel

-

01110000

70

-

2

2

Jump relative if accumulator is not zero

Springe relativ zum Programmzähler, wenn der Akkumulator 0 ist

cjne A,dadr,rel

-

10110101

B5

 

CY

3

2

Compare memory to accumulator. Jump

if not equal

Springe relativ zum Programmzähler, wenn die Inhalte von Akkumulator und dadr ungleich sind. Das Carry wird gesetzt, wenn dadr größer ist, sonst wird es rückgesetzt

cjne A,#const8,rel

-

10110100

B4

 

CY

3

2

Compare immediate data to accumu-

lator. Jump if not equal

Springe relativ zum Programmzähler, wenn der Inhalte des Akkumulators ungleich konst8 ist. Das Carry wird gesetzt, wenn konst8 größer ist, sonst wird es rückgesetzt

cjne Rr,#const8,rel

0-7

10111rrr

B8+r

 

CY

3

2

Compare immediate data to register. Jump

 if not equal

Springe relativ zum Programmzähler, wenn der Inhalte von Rr ungleich konst8 ist. Das Carry wird gesetzt, wenn konst8 größer ist, sonst wird es rückgesetzt

cjne @Ri,#const8,rel

i=0-1

1011011i

B6+i

 

CY

3

2

Compare constants of ondirect address to

immediate data, Jump if not equal

Springe relativ zum Programmzähler, wenn der Inhalte der Datenspeicherzelle die durch Ri adressiert ist, ungleich konst8 ist. Das Carry wird gesetzt, wenn konst8 größer ist, sonst wird es rückgesetzt

djnz Rr,rel

r=0-7

11011rrr

D8+r

-

2

2

Decrement register and jump if not zero

Der Inhalt von Register Rr wird um 1 erniedrigt. Ist dann der Inhalt 0, springe relativ zum Programmzähler

djnz dadr,rel

-

11011101

D5

-

3

2

Decrement memory and jump if not zero

Der Inhalt von dadr wird um 1 erniedrigt. Ist dann der Inhalt 0, springe relativ zum Programmzähler

 

Subroutine Instructions

lcall adr16

-

00010010

12

-

3

2

Long call to adr 16

Der Stack-Pointer wird erhöht. Der Inhalt des Programmzählers wird im Stack abgelegt. Das Programm wird bei der Adresse adr 16 fortgesetzt

acall adr11

-

See Table

 Branch

 instruction

 

-

2

2

Absolute call within current 2K

Der Stack-Pointer wird erhöht. Der Inhalt des Programmzählers wird im Stack abgelegt. Das Programm wird bei der Adresse adr 11 innerhalb der 2K fortgesetzt, auf die der Programmzähler zeigt

call adr11

-

-

-

-

2

2

Generiv Call

ASM51 generiert einen acall, lcall Befehl in Abhängigkeit der Entfernung des Sprungziels. (Bei Vorwärtsreferenz wird grundsätzlich lcall eingesetzt.

ret

-

00101101

22

-

1

2

Return from subroutine

Die oberen zwei Byte des Stack werden in den Programmzähler geladen. Der Stack-Pointer wird dabei erniedrigt

reti

-

00110010

32

-

1

2

Return from interrupt subroutine

Die oberen zwei Byte des Stack werden in den Programmzähler geladen. Der Stack-Pointer wird dabei erniedrigt. Die aktuelle Interrupt-Ebene wird freigegeben

nop

-

00000000

00

-

1

1

No operation

Leerbefehl