4 Instrukcje bajtowe) wymiany danych 39
Przykład:
Przesianie 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 Rl.fflCH
MOV P2.43H
Ha:
MOV A.ORO MOVX ©Rl.A INC RO INC R1 DJNZ R2.Pla
X0 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 <= ICH, mniej znaczący bajt adresu zewnętrznej pamięci RAM (431CH)
P2 c= 43H, bardziej znaczący bajt adresu zewnętrznej pamięd RAM (431CH)
,pobranie bajtu z wewnętrznej pamięci RAM ;przeslanie bajtu do zewnętrznej pamięd 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
f(A + DPTR)ęoDE L (A + PClęoDE
dotyczy tylko pamięci kodu programu
Adresowanie Mnemonik: Struktura bajtów. Cykle Znacz-
_*_ maszynowe niki:
indeksowe: |
MOVC |
A,©A+DPTR |
o o o o —• |
2 |
P |
indeksowe: |
MOVC |
A,@A+PC |
o o o o o |
2 |
P |
Opis działania:
Przesianie do akumulatora (A) zawartości komórki pamięd kodu programu adresowanej sumą zawartośd akumulatora (A) i:
• wskaźnikowego rejestru danych (DPTR),
• licznika rozkazów (PO.
Przykład:
Zerowanie akumulatora można zrealizować trzema sposobami:
CJr.AJ:
MOV A,#0 ;A c= 0, instrukacja 2-bajtowa, wykonywana
; w 1 cyklu maszynowym
lub
Clr_A_Ł
CLR A ;Ac=0, instrukacja 1-bajtowa, wykonywana
; w 1 cyklu maszynowym
lub
jak w przykładzie 2 na stronie 63 wykorzystując instrukcję XRL A.0E0H.
i CPL A
Działanie:
Complement Accumulator
A c: not A
Adresowanie: Mnemonik: Struktura bajtów: Cykle Znacz-
maszynowe: ntki:
rejestrowe: CPL A
Opis działania:
Negacja wszystkich bitów akumulatora.
Przykład:
Negacja arytmetyczna zmiennej Liczba=+10 UOOD=27lOH traktowanej jako 2 bajtowa liczba całkowita ze znakiem, z zakresu -32768..+32767, bajty rozmieszczone w wewnętrznej pamięd RAM jak na rysunku:
adresy w wewnętrznej pamięd RAM:
49H 27H = 0010 0111B 48H 10H = 0001 000GB
bajt bardziej znaczący bajt mniej znaczący
Liczba » ♦lO 000D = 2710H - 0010 0111 0001 0000B - Liczba - - 10 000D = 0D8F0H = 1101 1000 1111 OOOOH = NOT(Liczba) + I