Transfer Instructions Internal RAM

Mnemonic

Regi-ster

Incoding

Binary

Inc.

HEX

Affec

ted

Flags

Bytes

Cycles

Function

Description

mov A,Rr

r=0-7

11101rrr

E8+r

P

1

1

Move register Rr contents to accumulator

Charge le contenu du registre Rr dans l'accumulateur

mov Rr,A

r=0-7

11111rrr

F8+r

-

1

1

Move accumulator contents to register Rr

Charge le contenu de l'accumulateur dans le registre Rr

mov A,@Ri

i=0-1

1110011i

E6+i

P

1

1

Move contents of data memory addressed by Ri to accumulator

Charge dans l'accumulateur le contenu de l'emplacement de la mémoire de données dont l'adresse est dans Ri

mov @Ri,A

i=0-1

1111011i

F6+i

-

1

1

Move accumulator to data memory addressed by Ri

Charge le contenu de l'accumulateur à l'adresse de la mémoire de données contenue dans Ri

mov A,dadr*

-

11100101

E5

P

2

1

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

Charge dans l'accumulateur le contenu de dadr (mov A,ACC n'est pas une instruction valide)

mov dadr,A

-

11110101

F5

-

2

1

Move accumulator contents to direct address

Charge dans dadr le contenu de l'accumulateur

mov A,#const8

-

01110100

74

P

2

1

Move immediate data to accumulator

Charge une constante de 8 bits dans l'accumulateur

mov Rr,#const8

r=0-7

01111rrr

78+r

-

2

1

Move immediate data to register

Charge une constante de 8 bits dans dans le registre Rr

mov @Ri,#const8

i=0-1

0111011i

76+i

-

2

1

Move immediate data to data memory addressed by Ri

Charge une constante de 8 bits à l'emplacement de mémoire interne dont l'adresse est contenue dans Ri

mov dadr,#const8

-

01110101

75

-

3

2

Move immediate data to data memory

Charge une constante de 8 bits à dadr

mov Rr,dadr

r=0-7

10101rrr

A8+r

-

2

2

Load register Rr with contents of direct address

Charge dans le registre Rr le contenu de dadr

mov dadr,Rr

r=0-7

10001rrr

88+r

-

2

2

Load direct address with contents of register

Charge à dadr le contenu du registre Rr

mov dadr,@Ri

i=1-0

1000011i

86+i

-

2

2

Move contents of data memory addressed by Ri to direct address

Charge à dadr le contenu de l'emplacement de mémoire dont l'adresse est rangée dans Ri

mov @Ri,dadr

i=0-1

1010011i

A6+i

-

2

2

Move data memory to contents of data memory addressed by Ri

Charge le contenu de dadr à l'emplacement de mémoire dont Ri contient l'adresse

mov dadr1,dadr2

-

10000101

85

-

3

2

Move data memory to data memory

Charge à dadr1 le contenu de dadr2

mov DPTR,#const16

-

10010000

90

-

3

2

Move immediate data to data pointer

Charge une constante de 16 bits dans le pointeur de données DPTR

 

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

Charge dans l'accumulateur le contenu de l'emplacement de mémoire externe, dont Ri contient l'adresse

movx @Ri,A

i=0-1

1111001i

F2+i

-

1

2

Move accumulator contents to external data memory, addressed by Ri

Charge le contenu de l'accumulateur à l'emplacement de mémoire externe, dont Ri contient l'adresse

movx A,@DPTR

-

11100000

E0

P

1

2

Move contents of external data memory addressed by DPTR to accumulator

Charge dans l'accumulateur le contenu de l'emplacement de mémoire externe, dont DPTR contient l'adresse

movx @DPTR,A

-

11110000

F0

-

1

2

Move accumulator contents to external data memory, addressed by DPTR

Charge le contenu de l'accumulateur à l'emplacement de mémoire externe dont DPTR contient l'adresse

 

Transfer Instructions Internal RAM

xch A,Rr

r=0-7

11001rrr

C8+r

P

1

1

Exchange accumulator and register contents

Echange les contenus de l'accumulateur et du registre Rr

xch A,dadr

-

11000101

C5

P

2

1

Exchange accumulator and data memory contents

Echange les contenus de l'accumulateur et de dadr

xch A,@Ri

i=0-1

1100011i

C6+i

P

1

1

Exchange accumulator and data memory addressed by Ri

Echange les contenus de l'accumulateur et de l'emplacement de mémoire interne dont Ri contient l'adresse

xchd A,@Ri

i=0-1

1101011i

D6+i

P

1

1

Exchange low order nibble of accumulator and data memory

Echange les contenus des quartets de poids faible de l'accumulateur et de l'emplacement de mémoire interne dont Ri contient l'adresse

swap A

-

11000100

C4

-

1

1

Exchange nibbles of accumulators

Echange les quartets de l'accumulateur

push dadr

-

11000000

C0

-

2

2

Increment stack pointer.

Push data memory onto stack

Incrémente (augmente d'une unité) le pointeur de pile

Dépose le contenu de dadr sur la pile

pop dadr

-

11010000

D0

-

2

2

Pop data memory form stack

Decrement stack pointer

Transfère le contenu de l'emplacement de mémoire sur lequel pointe le pointeur de pile vers dadr, le contenu du pointeur de pile diminue de 1

 

Transfer Instructions ROM

movc A,@A+DPTR

-

10010011

93

P

1

2

Move program memory addressed by accumulator plus DPTR to accumulator

Charge dans l'accumulateur le contenu de l'emplacement de mémoire dont l'adresse est égale à la somme de DPTR et de l'accumulateur

movc A,@A+PC

-

10000011

83

P

1

2

Move programm memory addressed by accumulator plus program counter to accumulator

Charge dans l'accumulateur le contenu de l'emplacement de mémoire dont l'adresse est égale à la somme du compteur de programme et de l'accumulateur


Boolean Instructions AND

Mnemonic

Regi-ster

Incoding

Binary

Inc.

HEX

Affec

ted

Flags

Bytes

Cycl es

Function

Description

anl A,Rr

r=0-7

01011rrr

58+r

P

1

1

Logical AND accumulator with register contents to accumulator

Le contenu de l'accumulateur est écrasé par le résultat de l'opération ET entre le contenu de l'accumulateur et le contenu du registre 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

Le contenu de l'accumulateur est écrasé par le résultat de l'opération ET entre le contenu de l'accumulateur et le contenu de l'emplacement de mémoire interne, dont Ri contient l'adresse

anl A,dadr

-

01010101

55

P

2

1

Logical AND accumulator with contents of direct adress to accumulator

Le contenu de l'accumulateur est écrasé par le résultat de l'opération ET entre le contenu de l'accumulateur et le contenu de dadr

anl A,#const8

-

01010100

54

P

2

1

Logical AND accumulator with immediate data to accumulator

Le contenu de l'accumulateur est écrasé par le résultat de l'opération ET entre le contenu de l'accumulateur et la constante de 8 bits

anl dadr,A

-

01010010

52

-

2

1

Logical AND accumulator with contents of direct adress ti direct adress

Le contenu de dadr est écrasé par le résultat de l'opération ET entre le contenu de l'accumulateur et celui de dadr

anl dadr,#const8

-

01010011

53

-

3

2

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

Le contenu de dadr est écrasé par le résultat de l'opération ET entre la constante de 8 bits et le contenu de dadr

 

Boolean Instructions OR

orl A,Rr

r=0-7

01001rrr

48+r

P

1

1

Logical OR accumulator with register contents to accumulator

Le contenu de l'accumulateur est écrasé par le résultat de l'opération OU entre le contenu de l'accumulateur et le contenu du registre 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

Le contenu de l'accumulateur est écrasé par le résultat de l'opération OU entre le contenu de l'accumulateur et le contenu de l'emplacement de mémoire interne, dont Ri contient l'adresse

orl A,dadr

-

01000101

45

P

2

1

Logical OR accumulator with contents of direct adress to accumulator

Le contenu de l'accumulateur est écrasé par le résultat de l'opération OU entre le contenu de l'accumulateur et le contenu de dadr

orl A,#const8

-

01000100

44

P

2

1

Logical OR accumulator with immediate data to accumulator

Le contenu de l'accumulateur est écrasé par le résultat de l'opération OU entre le contenu de l'accumulateur et la constante de 8 bits

orl dadr,A

-

01000010

42

-

2

1

Logical OR accumulator with contents of direct adress ti direct adress

Le contenu de dadr est écrasé par le résultat de l'opération OU entre le contenu de l'accumulateur et le contenu de dadr

orl dadr,#const8

-

01000011

43

-

3

2

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

Le contenu de dadr est écrasé par le résultat de l'opération OU entre la constante de 8 bits et le contenu de 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

Le contenu de l'accumulateur est écrasé par le résultat de l'opération OU exclusif entre le contenu de l'accumulateur et le contenu du registre 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

Le contenu de l'accumulateur est écrasé par le résultat de l'opération OU exclusif entre le contenu de l'accumulateur et le contenu de l'emplacement de mémoire interne dont Ri contient l'adresse

xrl A,dadr

-

01100101

65

P

2

1

Logical XOR accumulator with contents of direct adress to accumulator

Le contenu de l'accumulateur est écrasé par le résultat de l'opération OU exclusif entre le contenu de l'accumulateur et le contenu de dadr

xrl A,#const8

-

01100100

64

P

2

1

Logical XOR accumulator with immediate data to accumulator

Le contenu de l'accumulateur est écrasé par le résultat de l'opération OU exclusif entre le contenu de l'accumulateur et la constante de 8 bits

xrl dadr,A

-

01100010

62

-

2

1

Logical XOR accumulator with contents of direct adress ti direct adress

Le contenu de dadr est écrasé par le résultat de l'opération OU exclusif entre le contenu de l'accumulateur et le contenu de dadr

xrl dadr,#const8

-

01100011

63

-

3

2

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

Le contenu de dadr est écrasé par le résultat de l'opération OU exclusif entre la constante de 8 bits et le contenu de dadr

 

Boolean Instructions COMPLEMENT / CLEAR ACC.

cpl A

-

11110100

F4

P

1

1

Complement accumulator

Complémente le contenu de l'accumulateur (complément à 1)

clr A

-

11100100

E4

P

1

1

Clear accumulator

Efface l'accumulateur


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

Description

mov C,badr

-

10100010

A2

CY

2

1

Move contents of bit adress to carry

Charge le contenu de badr dans la retenue (carry)

mov badr,C

-

10010010

92

-

2

2

Move contents of carry to bit adress

Charge le contenu de la retenue dans badr

anl C,badr

-

10000010

82

CY

2

2

Logical AND carry with contents of bit adress

La retenue est écrasée par le résultat de l'opération ET entre la retenue et le contenu de badr

anl C,/badr

-

10110000

B0

CY

2

2

Logical AND carry with complement of contents of bit adress

La retenue est écrasée par le résultat de l'opération ET entre la retenue et le contenu inversé de badr

orl C,badr

-

01110010

72

CY

2

2

Logical OR carry with contents of bit adress

La retenue est écrasée par le résultat de l'opération OU entre la retenue et le contenu de badr

orl c,/badr

-

10100000

A0

CY

2

2

Logical OR carry with complement of contents of bit address

La retenue est écrasée par le résultat de l'opération OU entre la retenue et le contenu inversé de badr

clr C

-

11000011

C3

CY

1

1

Clear carry

Efface la retenue

clr badr

-

11000010

C2

-

2

1

Clear contents of bit adress

Efface le contenu de badr

cpl C

-

10110011

B3

CY

1

1

Complement carry

Inverse la retenue

cpl badr

-

10110010

B2

-

2

1

Complement contents of bit address

Inverse le contenu de badr

setb C

-

11010011

D3

CY

1

1

Set carry

Positionne la retenue

setb badr

-

11010010

D2

-

2

1

Set contents of bit address

Positionne le contenu de badr

 

Arithmetic Instructions ADD

add A,Rr

r=0-7

00101rrr

28+r

CY,AC,

OV,P

1

1

Add register contents to accumulator

Le contenu de l'accumulateur est écrasé par le résultat de l'addition entre le contenu de l'accumulateur et le contenu du registre 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

Le contenu de l'accumulateur est écrasé par le résultat de l'addition entre le contenu de l'accumulateur et le contenu de l'emplacement de mémoire interne, dont Ri contient l'adresse

add A,dadr

-

00100101

25

CY,AC,

OV,P

2

1

Add contents of direct adress to accumulator

Le contenu de l'accumulateur est écrasé par le résultat de l'addition entre le contenu de l'accumulateur et le contenu de dadr

add A,#const8

-

00100100

24

CY,AC,

OV,P

2

1

Add immediate data to accumulator

Le contenu de l'accumulateur est écrasé par le résultat de l'addition entre le contenu de l'accumulateur et la constante de 8 bits

addc A,Rr

r=0-7

00111rrr

38+r

CY,AC,

OV,P

1

1

Add carry and register contents to accumulator

Le contenu de l'accumulateur est écrasé par le résultat de l'addition entre le contenu de l'accumulateur, le contenu du registre Rr et le contenu de l'indicateur de retenue

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

Le contenu de l'accumulateur est écrasé par le résultat de l'addition entre le contenu de l'accumulateur, le contenu de l'emplacement de mémoire interne, dont Ri contient l'adresse et le contenu de l'indicateur de retenue

addc A,dadr

-

00110101

35

CY,AC,

OV,P

2

1

Add carry and contents of direct adress to accumulator

Le contenu de l'accumulateur est écrasé par le résultat de l'addition entre le contenu de l'accumulateur le contenu de dadr et le contenu de l'indicateur de retenue

addc A,#const8

-

00110100

34

CY,AC,

OV,P

2

1

Add carry and immediate data to accumulator

Le contenu de l'accumulateur est écrasé par le résultat de l'addition entre le contenu de l'accumulateur de la constante de 8 bits et le contenu de l'indicateur de retenue

inc A

-

00000100

04

P

1

1

Increment accumulator

Ajoute 1 au contenu de l'accumulateur

inc Rr

r=0-7

00001rrr

08+r

-

1

1

Increment register

Ajoute 1 au contenu du registre Rr

inc @Ri

i=0-1

0000011i

06+1

-

1

1

Increment data memory contents adressed by Ri

Ajoute 1 au contenu de l'emplacement de mémoire interne dont Ri contient l'adresse

inc dadr

-

00000101

05

-

2

1

Increment contents of direct address

Ajoute 1 au contenu au contenu de dadr

inc DPTR

-

10100011

A3

-

1

2

Increment data pointer

Ajoute 1 au contenu du registre DPTR

 

Arithmetic Instructions DECIMAL ADJUSTING

da A

-

11010100

D4

CY,P

1

1

Decimal adjust accumulator for addition

La prise en compte de la retenue et de la retenue auxiliaire corrige le résultat de l'addition antérieure de deux nombres DCB


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

La somme des contenus de la retenue et du registre Rr est soustraite de l'accumulateur. Le résultat écrase le contenu de l'accumulateur

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

La somme des contenus de la retenue et de l'emplacement de mémoire interne, dont Ri contient l'adresse, est soustraite de l'accumulateur. Le résultat écrase le contenu de l'accumulateur

subb A,dadr

-

10010101

95

CY,AC,

OV,P

2

1

Subtract sum of contents of direct adress

 and carry from accumulator

La somme des contenus de la retenue et de l'adresse dadr est soustraite de l'accumulateur. Le résultat écrase le contenu de l'accumulateur

subb A,#const8

-

10010100

94

CY,AC,

OV,P

2

1

Subtract sum of immediate data

and carry form accumulator

La somme des contenus de la retenue et de la constante de 8 bits est soustraite de l'accumulateur. Le résultat écrase le contenu de l'accumulateur

dec A

-

00010100

14

P

1

1

Decrement accumulator

Le contenu de l'accumulateur est décrémenté (diminué de 1)

dec Rr

r=0-7

00011rrr

18+r

-

1

1

Decrement register

Décrément du contenu du registre Rr

dec @Ri

i=0-1

0001011i

16+1

-

1

1

Decrement data memory contents

adressed by Ri

Décrément du contenu de l'emplacement de mémoire interne dont Ri contient l'adresse

dec dadr

-

00010101

15

-

2

1

Decrement contents of direct address

Décrément du contenu de dadr

 

Arithmetic Instructions MULTIPLY / DIVIDE

mul AB

-

10100100

A4

CY,OV,

P

1

4

Multiply accumulator with B-register

Multiplication des contenus de l'accumulateur et du registre B. L'octet de poids faible du produit écrase le contenu de l'accumulateur, l'octet de poids fort, le contenu du registre B. La retenue est effacée, le bit OV (dépassement de capacité) est positionné, si le résultat est 0 dans le registre B

div AB

-

100100100

A4

CY,OV,

P

1

4

Divide accumulator by B-register

Le contenu de l'accumulateur est divisé par le contenu du registre B. Le quotient écrase le contenu de l'accumulateur, le reste celui du registre B. La retenue est effacée. Une division par 0 positionne le bit OV (dépassement de capacité)

 

Shift Instructions

rl A

-

00100011

23

-

1

1

Rotate left without carry

Décale le contenu de l'accumulateur d'un emplacement vers la gauche. Le bit 27 est décalé à l'emplacement de bit 20

rlc A

-

00110011

33

CY,P

1

1

Rotate left through carry

Décale le contenu de l'accumulateur d'un emplacement vers la gauche par l'intermédiaire de la retenue. La retenue  est décalée au bit 20

rr A

-

00000011

03

-

1

1

Rotate righ without carry

Décale le contenu de l'accumulateur d'un emplacement vers la droite. Le bit 20 est décalé à l'emplacement du bit 27

rrc A

-

00010011

13

CY,P

1

1

Rotate left through carry

Décale le contenu de l'accumulateur d'un emplacement vers la droite. La retenue est décalée à l'emplacement du bit 27

 


Branch Instructions Unconditional Jumps

ljmp adr16

-

00000010

02

-

3

2

Jump to absolute address

Le programme se poursuit à l'adresse de 16 bits adr

sjmp rel

-

10000010

80

-

2

2

Jump to relative address

Le programme se poursuit à l'adresse relative au compteur de programme

ajmp adr11

-

See Table Branch ins

 

 

-

2

2

Jump to absolute address

Le programme se poursuit à l'adresse de 11 bits adr 11 dans les 2 Ko sur lesquels pointe le compteur de programme

jmp adr

-

-

-

-

-

-

Generic Jump

ASM 51 produit une instruction sjmp, ajmp, ljmp en fonction de l'éloignement du saut de destination. (LJMP si l'adresse est en avant).

jmp @A+DPTR

-

01110011

73

-

1

2

Jump to sum of accumulator and data

 pointer

Le programme se poursuit à une adresse égale à la somme entre le contenu de l'accumulateur et DPTR

 

Branch Instructions Conditional Jumps

jc rel

-

01000000

40

-

2

2

Jump if carry is set

Saut relatif au compteur de programme si carry = 1

jnc rel

-

01010000

50

-

2

2

Jump if carry is not set

Saut relatif au compteur de programme si carry = 0

jb badr,rel

-

00100000

20

-

3

2

Jump if bit is set

Saut relatif au compteur de programme si le contenu de badr = 1

jnb badr,rel

-

00110000

30

-

3

2

Jump if bit is not set

Saut relatif au compteur de programme si le contenu de badr = 0

jnb rel

-

01010000

50

-

3

2

Jump if bit is not set

Saut relatif au compteur de programme si le contenu de badr = 0

jbc badr,rel

-

00010000

10

-

3

2

Jump and clear if bit is set

Saut relatif au compteur de programme si le contenu de badr = 1 et efface le contenu de badr

jz rel

-

01100000

60

-

2

2

Jump relative if accumulator is set

Saut relatif au compteur de programme si le contenu de l'accumulateur = 0

jnz rel

-

01110000

70

-

2

2

Jump relative if accumulator is not zero

Saut relatif au compteur de programme si le contenu de l'accumulateur 0

cjne A,dadr,rel

-

10110101

B5

 

CY

3

2

Compare memory to accumulator. Jump

if not equal

Saut relatif au compteur de programme si les contenus de l'accumulateur et de dadr sont différents. La retenue est positionnée si dadr est plus grand, elle est remise à 0 dans le cas contraire

cjne A,#const8,rel

-

10110100

B4

 

CY

3

2

Compare immediate data to accumu-

lator. Jump if not equal

Saut relatif au compteur de programme si les contenus de l'accumulateur et de const8 sont différents. La retenue est positionnée si const8 est plus grand, elle est remise à 0 dans le cas contraire

cjne Rr,#const8,rel

0-7

10111rrr

B8+r

 

CY

3

2

Compare immediate data to register. Jump

 if not equal

Saut relatif au compteur de programme si les contenus de Rr et de const8 sont différents. La retenue est positionnée si konst8 est plus grand, elle est remise à 0 dans le cas contraire

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

Saut relatif au compteur de programme si le contenu de l'emplacement de mémoire dont Ri contient l'adresse, est différent de const8. La retenue est positionnée si const8 est plus grand, elle est remise à 0 dans le cas contraire

djnz Rr,rel

r=0-7

11011rrr

D8+r

-

2

2

Decrement register and jump if not zero

Le contenu du registre Rr est diminué de 1. S'il est toujours 0, saut relatif au compteur de programme

djnz dadr,rel

-

11011101

D5

-

3

2

Decrement memory and jump if not zero

Le contenu de dadr est diminué de 1. S'il est toujours 0, saut relatif au compteur de programme

 

Subroutine Instructions

lcall adr16

-

00010010

12

-

3

2

Long call to adr 16

Le pointeur de pile est incrémenté. Le contenu du compteur de programme est déposé sur la pile. Le programme se poursuit à l'adresse adr 16

acall adr11

-

See Table

 Branch

 instruction

 

-

2

2

Absolute call within current 2K

Le pointeur de pile est incrémenté. Le contenu du compteur de programme est déposé sur la pile. Le programme se poursuit à l'adresse de 11 bits adr 11 dans les 2 Ko sur lesquels pointe le compteur de programme

call adr11

-

-

-

-

2

2

Generiv Call

ASM51 produit une instruction acall, lcall en fonction de l'éloignement de la cible du saut. (lcall si la cible est en avant).

ret

-

00101101

22

-

1

2

Return from subroutine

Les deux octets de poids fort de la pile sont chargés dans le compteur de programme. Le pointeur de pile est décrémenté

reti

-

00110010

32

-

1

2

Return from interrupt subroutine

Les deux octets de poids fort de la pile sont chargés dans le compteur de programme. Le pointeur de pile est décrémenté. Le niveau d'interruption courant est abandonné

nop

-

00000000

00

-

1

1

No operation

Instruction sans effet