Instrukcje programowe mikroprocesora I80C51
Tryby adresowania
• Natychmiastowe (immediate) dotyczy argumentu umieszczonego w kodzie istrukcji (instrukcja z operandem bezpośrednim)
• Rejestrowe bezpośrednie (register direct) wskazuje jeden z rejestrów procesora jako miejsce operandu (w kodzie instrukcji podawany jest numer tego rejestru)
• Bezpośredni (direct) - związany z adresowaniem danych w pamięci, efektywny adres operandu podany jest bezpośrednio w kodzie instrukcji (bezpośrednio mogą być tylko wewn. pamięć RAM i obszar rejestrów SFR)
• Rejestrowy pośredni (register indirect) - adres komórki pamięci przechowującej dany operand odczytywany jest z rejestru procesora (przy wykorzystaniu rejestrów RO, R1 wybranego banku rejestrów - możliwe adresowanie pamięci RAM wewn. i zewn.)
• Pośrednie- zawartością rejestru bazowego i indeksowego - do 16-bitowego adresu bazowego (DPTR lub PC) jest dodawana 8-bitowa zawartość akumulatora A.
Instrukcje arytmetyczne
ADD A,# 127 ; adresowanie natychmiastowe
ADD a,R7 ; adresowanie rejestrowe bezpośrednie
ADD a,7FH ; bezpośrednie
ADD A,@R0 ; adresowanie pośrednie
Table 1. 80C51 Arithmetic Instructions
MNEMONIC |
OPERATION |
ADDRESSING MODES |
EXECUTION TIME (MS) | |||
DIR |
IND |
REG |
IMM | |||
ADD A <byte> |
A • A • <byte» |
X |
X |
X |
X |
1 |
ADDC A.<byle> |
X |
X |
X |
X | ||
SUBB A.<byte> |
A = A - «byle» - C |
X |
X |
X |
X |
1 |
INC A |
A • A * 1 |
Accunulalor only |
1 | |||
NC «byte> |
<byta> = «byte> * 1 |
X | X | X I |
l | |||
INC DPTR |
OPTR = DPTR * 1 |
Data Pomiar only |
2 | |||
DECA |
A- A- 1 |
Accumulalof only |
1 | |||
DEC <byte> |
«byla> = «t>yte» - 1 |
■ 1 > 1 ■ 1 |
l | |||
MUL AB |
8 A = B x A |
4 | ||||
OIV AB |
A » 1 nt(A»‘B| B = Mod|A'B| |
ACC and Bomy |
4 | |||
DA A |
Decimal AĄusI |
Accunulatoronly |
i |
Table 2. 80C51 Logical Instructions
MNEMONIC |
OPERATION |
ADDRESSING MODES |
EXECUTK>N TIME (MS) | |||
DIR |
IND |
REG |
IMM | |||
ANI A <byle> |
A = A ANO <byle> |
X |
X |
X |
X |
l |
ANI <byle>,A |
<byle> = <byle> ANO.A |
X |
l | |||
ANI <Dylo>.*data |
<byle> ■ <byte» AND łdata |
X |
2 | |||
ORL A.<byte> |
A = A.OR«byte> |
X |
X |
X |
X |
1 |
ORL <by1o>.A |
<byle> = <byte> OR A |
X |
I | |||
ORL <byte>.*data |
<byle> = <byte» OR Odata |
X |
2 | |||
XRL A <bylo» |
A * A XOR <bylo> |
X |
X |
X |
X |
i |
XRL <byle>A |
<byte» = <byte> ,XOR.A |
X |
l | |||
XRL <byto>.#data |
«by1e> = «byle> XOR «dala |
X |
2 | |||
CRL A |
A = 00H |
Accunulalor only |
1 | |||
CPL A |
A = NOTA |
Acaanulalor only |
1 | |||
RL A |
Roiaie ACC Lełi 1M |
Accunulalor only |
1 | |||
RLCA |
Rolato Laft Ihroogh Carry |
Accwnulalor only |
1 | |||
RR A |
Roiate ACC Righl 1 M |
Accunulalor only |
1 | |||
RRC A |
Rotate Righl Ibrough Carry |
Accunulalor only |
1 | |||
SWAP A |
SwapNibbles mA |
Accunulalor only |
I |