6. Instrukcie logiczne 59
iloczyn przesyłany jest do akumulatora (A),
• komórki wewnętrznej pamięć RAM adresowanej bezpośrednio adresem adr z: -* zawartością akumulatora A,
-* 8-bitową daną
wynik iloczynu przesyłany jest do komórki wewnętrznej pamięci RAM o adresie adr.
Przykład 1:
Zerowanie wybranych bitów akumulatora: Ay, A3 i Aq:
Maska DB 1000 1001B ;jedynka logiczna na pozycji zerowanego bitu Anll.A:
ANL A.#NOT(Maska) ;A <= A and NOT(Maska), NOT to negacja maski ;AcA and 0111 0110B
dyrektywa asemblera DB ma za zadanie zarezerwowanie 1 bajtu w pamięci kodu programu i wpisanie jako wartości początkowej 1000 1001B. Maska traktowana jc*i jako ciąg zero-jedynko wy, w którym niezerowe wartości pojawiają się na wyróżnionych bitach. Jeśli stan akumulatora A-0DBH-1101 1011H to po wykonaniu programu:
A = 1101 1011B
maska - 1000 1001B
NOT(maska) - 0111 0110B A and NOT(maska) - 01011010B
Przykład 2:
Zerowanie bardziej znaczącej tetrady komórki wewnętrznej pamięci RAM o adresie adr, bity (adr^.ą:
Anl2_adn
ANL adr,#0FH ;(adr) c= (adr) and 0F11
Jeśli zawartość komórki pamięci (adr) a 4EH a 0100 1110B to po wykonaniu programu stan jest następujący:
(adr) - 0100 HIOB 0FH- 00001111B (adr) and 0FH - 0000 1110B
Mikrokontroler 80(051 - oroeramowame
Działanie
A c= A +
(adr)
#dana
Adresowanie Mnemonik:
Add 8-bit Data
Struktura bajtów:
Cykle
maszynowe:
rejestrowe: |
ADD |
A.Rn |
1° |
0 |
1 |
gil |
r |
r |
Tl |
1 |
bezpośrednie: |
ADD |
A,adr |
|o |
0 |
1 |
0 | 0 |
1 |
0 |
i| |
1 |
1 |
adr |
| | ||||||||
pośrednie: |
ADD |
A,0R» |
1 0 |
0 |
1 |
0 | 0 |
1 |
1 |
i |
l |
natychmiastowe: |
ADD |
A.idana |
|o |
0 |
1 |
o | o' |
1 |
0 |
0 |
1 |
dana | ||||||||||
Znaczniki: C, |
AC, OV |
P |
Opis dziabnia:
Dodanie do zawartości akumulatora (A) zawartości:
• rejestru Rn, Rn = R0..R7,
• komórki wewnętrznej pamięci RAM adresowanej bezpośrednio adresem adr.
• komórki wewnętrznej pamięci RAM adresowanej pośrednio rejestrem Ri,
Ri =* RO lub Rl,
■ 8 bitowej danej.
Wynik dodawania przesiany jest do akumulatora (A).
Znacznik przeniesienia (O sygnalizuje przekroczenie zakresu liczb całkowitych bez znaku (0..255), a znacznik nadmiaru(OV) przekroczenie zakresu liczb całkowitych ze znakiem (-128..+127).
Przykład:
Obliczenie sumy zawartości rejestrów B (B=9) i R7 (R7=68H=104D) i stałej Const (Const*12H=18D) oraz przesłanie wyniku do komórki wewnętrznej pamięci RAM o adresie 60H:
Mikrokontroler RWOM - nfooramow*n»f