4 Instrukcje ba | to wg wymiany danych 39
Przykład:
Przesłanie zawartości czterech banków rejestrów RB1..RB3, łącznie 24 bajtów, do zewnętrznej pamięci RAM od adresu początkowego 431CH. Program wykorzystuje rejestry RO, R1 i R2 z zerowego banku rejestrów RBO.
Mov_Int_Ext | |
MOV |
R0,#8 |
MOV |
R2,#24 |
MOV |
R1,#lCH |
MOV |
P2.43H |
Ra: | |
MOV |
A,©R0 |
MOVX ©Rl.A | |
INC |
RO |
INC |
R1 |
DJNZ |
R2.Pla |
;R0 c= 8, rejestr RO adresuje wewnętrzną pamięć RAM, kolejne rejestry w banku RB1..RB3 ;R2 c= 24, rejestr R2 jest licznikiem przesyłanych 3 * 8 = 24 rejestrów ;R1 c= ICH, mniej znaczący bajt adresu wewnętrznej pamięci RAM (431CH)
;P2 <= 43H, bardziej znaczący bajt adresu wewnętrznej pamięci RAM (431CH)
;pobranie bajtu z wewnętrznej pamięci RAM ;przesianie bajtu do zewnętrznej pamięci RAM przygotowanie do pobrania następnego bajtu przygotowanie do przesłania następnego bajtu ;R2 <= R2 -1, jeśli R2 * 0 to powtórzenie pętli przesłań
Move Codę
MOVC A.argument
Działanie
dotyczy tylko pamięci kodu programu
Adresowanie Mnemonik: Struktura bajtów. Cykle Znacz-
maszynowe: |
mki: | ||||
indeksowe: |
MOVC |
A,@A+DPTR |
|T 0 0 1 0 |
n 2 |
P |
indeksowe: Opis działania: |
MOVC |
A,@A+PC |
| 1 0 0 0 | 0 |
0 1 1 1 2 |
P |
Przesłanie do akumulatora (A) zawartości komórki pamięd kodu programu adresowanej sumą zawartości akumulatora (A) i:
• wskaźnikowego rejestru danych (DPTR),
• licznika rozkazów (PO.
Przykład:
Zerowanie akumulatora można zrealizować trzema sposobami:
CIr_AJ:
MOV A,#0 ;A c= 0, instrukacja 2-bajtowa, wykonywana
; w 1 cyklu maszynowym
lub
Clr_A_Ł
CLR A ;AcO, instrukacja 1-bajtowa, wykonywana
; w 1 cyklu maszynowym
lub
jak w przykładzie 2 na stronie 63 wykorzystując instrukcję XRL A.0E0H.
CPL A
Działań u:
Complement Accumulator
A cc not A
Adresowanie: Mnemonik: Struktura bajtów: Cykle Ziuicz-
__ maszynowe: tuki:
rejestrowe: - CPL A
Opis działania:
Negacja wszystkich bitów akumulatora.
Przykład:
Negacja arytmetyczna zmiennej Liczba=+10 U00D=2710H traktowanej jako 2 bajtowa liczba całkowita ze znakiem, z zakresu -32768..+32767, bajty rozmieszczone w wewnętrznej pamięci RAM jak na rysunku:
adresy w wewnętrznej pamięci RAM:
49H
48H
27H = 0010 0111B bajt bardziej znaczący 10H = 0001 000GB bajt mniej znaczący
Liczba » ♦lO 000D = 2710H - 00100111 UtX)l OOOOB - Liczba -= - 10 OUOD = ODMFOH = 1101 1000 1111 OOOOB = NOT(Liczba) + 1