-ł Instrukcje bano we; wymiany danych 27
-ł Instrukcje bano we; wymiany danych 27
MOV R4.0C4H MOV 0AH,#3DH MOV A.6R0
;adresowanic bezpośrednie, R4 e= (0C4H),
adresowanie natychmiastowe, (OAH) c= 3DH,
.-adresowanie rejestrowe pośrednie, A c= (RO)
danych z całej dostępnej zewnętrznej pamięć RAM lub pamięć kodu programu.
Ol
nętrznej pamięć RAM adresowanych bezpośrednia
Działanie instrukcji jest następujące:
• inkrcmentacja, zwiększenie o jeden wskaźnika stosu
SP c= SP ♦ 1,
• przesłanie wskazanego bajtu <scr> do wewnętrznej pamięć RAM adresowanej wskaźnikiem stosu
(SP) c= (adr)
Instrukcja POP adr odtwarza wartość rejestrów, adresowanych bezpośrednio łub wybranych komórek wewnętrznej pamięć RAM, które zostały zachowane na stosie. Działanie tej instrukcji jest następujące:
• przesianie zawartość komórki adresowanej wskaźnikiem stosu do komórki pamięć o podanym adresie
(adr) <= (SP)
• dekrementacja, zmniejszenie o jeden wskaźnika stosu SPe=SP-l,
Instrukcje PUSH i POP wykorzystywane są do ochrony zawartość komórek wenętrznej pamięć RAM. Sytuacja taka występuje najczęśćej przy wywołaniu podprogramu, który korzysta i zmienia wartość tych komórek, a które z punktu widzenia programu głównego nie powinny być modyfikowane.
Ze względu na tryb pośredniego adresowania wewnętrznej pamięć RAM przez wskaźnik stosu (SP), obszar stosu nie pokrywa się z obszarem rejestrów specjalnych (SFR), które adresowane są tylko bezpośrednia Jeśli dysponujemy procesorem, który nie posiada bloku wewnętrznej pamięć RAM o adresach 80H~0FFH, np. 8051/31 i zawartość wskaźnika stosu SP ź 80H to wykonanie instrukcji PUSH adr i POP adr spowoduje, że do komórki pamięć o podanym adresie adr przesłane są wartość przypadkowe.
Adresowanie: Mnemonik: Struktura bajtów. Cykle Znacz-
maszynowe: niki
2
bezpośrednie: JNZ rei
0 1 1 ll 0 0 0 0
rei
* Znaczniki sa zmieniane jeśli instrukcja dotyczy rejestru słowa statusowego (PS W)
Opis działania:
Wykonanie względnego skoku warunkowego jeśli spełniony jest warunek:
• wybrany bit ma wartość jedynki logicznej, wartość bitu nie jest zmieniana (JB bit.rel),
• wybrany bit ma wartość zera logicznego, wartość bitu nie jest zmieniana (JNB bit.rel),
• wybrany bit ma wartość jedynki logicznej, wybrany bit jest zerowany (JBC bit.rel),
• znacznik przeniesienia C = 1, wartość znacznika przeniesienia nie jest zmieniana (JC rei),
• znacznik przeniesienia C = 0, wartość znacznika przeniesienia nie jest zmieniana (JNC rei),
• stan akumulatora ma wartość zerową, zawartość akumulatora nic ulega zmianie (JZ rei),
• stan akumulatora nie ma wartości zerowej, zawartość akumulatora nie ulega zmianie (JNZ rei).
Jeśli podany warunek nie jest spełniony to wykonywana jest następna instrukcja występująca po instrukcji skoku.
We wszystkich rozkazach skoków 8-bitowe przesunięcie rei, traktowane jako liczba całkowita ze znakiem zawarta w przedziale -128..+127. dodawane jest znakowo do zawartości licznika rozkazów (PC). Jeśli przesunięcie rei jest liczbą dodatnią to roszerzeniem znakowym jest bajt zerowy, jeśli liczbą ujemną to bajt równy UFFH.
Adresy bitów testowanych w rozkazach skoków warunkowych są następujące:
• 0..7FH (0..127) - obszar wewnętrznej pamięd RAM o adresach 20H..2FH.
• 80H..0FFH (128..255) - rejestry specjalne, których adresy są wielokrotnością 8
Przykład 1:
Stan znacznika przeniesienia (O określa typ wykonywane| procedury, jeśli C ti to procedury’ Proc 1, jeśli C - 1 to procedury Proc 2:
......................... ;program zmienia stan znacznika przeniesienia (O
. jeśli C * 0 to skok do Proc l .'jeśli C = 1 to skok do Proc.2
JmpProc
JNC Proc.l
JC Proc.2