44 ALU, akumulator, słowo staną
zawartość licznika rozkazów (2 bajty). Ponadto, za pomocą rozkazu PUSH może być tam także zapisana zawartość dowolnej - adresowanej bezpośrednio - komórki wewnętrznej pamięci danych (również rejestrów specjalnych).
Zdejmowanie informacji ze stosu następuje w wyniku wykonania rozkazów powrotu RET lub RETI, powodujących odtworzenie stanu licznika rozkazów, oraz rozkazu POP, powodującego wpisanie zdejmowanych danych pod wskazany adres bezpośredni w pamięci.
Jednostka
ARYTMETYCZNO-LOGICZNA,
AKUMULATOR, SŁOWO STANU
Jednostka arytmetyczno-logiczna
(ang. arithmetic-logic unit)- ALU - mikrokomputerów rodziny MCS-51
działa na słowach 8-bitowych. Może wykonywać następujące operacje
arytmetyczne:
- dodawanie argumentów, dodawanie z przeniesieniem, odejmowanie z pożyczką; pierwszy z argumentów (składnik, odjemna) jest umieszczony w akumulatorze, a drugi (składnik, odjemnik) - w wewnętrznej pamięci danych lub jako argument bezpośredni rozkazu; wynik jest wpisywany do akumulatora; w słowie stanu PSW są ustawiane (zgodnie z wynikiem operacji) znaczniki przeniesienia CY i nadmiaru OV, sygnalizujące przekroczenie zakresu liczb 8-bitowych, odpowiednio bez znaku i ze znakiem;
- mnożenie 8-bitowych liczb bez znaku, umieszczonych w akumulatorze i rejestrze B; 16-bitowy wynik jest wpisywany do akumulatora (8 mniej znaczących bitów) i rejestru B (8 bardziej znaczących bitów); dzielenie 8-bitowych liczb bez znaku dzielnej z akumulatora przez dzielnik z rejestru B; część całkowita ilorazu jest wpisywana do akumulatora, a reszta do rejestru B;
- zwiększanie i zmniejszanie o 1 zawartości akumulatora lub dowolnej komórki wewnętrznej pamięci danych;
- korekcja dziesiętna wyniku dodawania zapisanego w akumulatorze.
ALU może wykonywać także następujące operacje logiczne:
- iloczyn (AND), suma (OR), różnica symetryczna (EXOR); argumenty operacji są umieszczone jak przy dodawaniu lub jeden z nich i wynik operacji są umieszczone w wewnętrznej pamięci danych (adresowanej bezpośrednio), a drugi stanowi zawartość akumulatora lub argument bezpośredni rozkazu;
- negacja (NOT) zawartości akumulatora;
- przesuwanie cykliczne zawartości akumulatora w lewo i w prawo.
Ośmiobitowy akumulator (ang. accumulator)-A - jest jednym z najważniejszych rejestrów procesora, współpracującym z jednostką arytm-metyczno-logiczną. Jest on miejscem, z którego zostaje pobrany argument (lub jeden z argumentów) i do którego wpisuje się wynik większości operacji. Ponadto, akumulator jest rejestrem przesunięcia dodawanego do adresu bazowego przy pobieraniu danych z pamięci programu oraz przy skoku pośrednim. Jest on jednym z rejestrów specjalnych (SFR - adres OEOH, adresowany bitowo). Jest dostępny programowo na dwa sposoby: jako rejestr adresowany przez nazwę A oraz jako rejestr specjalny adresowany bezpośrednio. W tym drugim przypadku jest oznaczany symbolem ACC. Dostęp za pomocą adresowania bezpośredniego wykorzystuje się przede wszystkim przy przesyłaniu zawartości akumulatora na stos.
Drugim ważnym rejestrem (związanym z ALU) jest rejestr B (SFR
- adres OFOH). Przy wykonywaniu operacji mnożenia i dzielenia jest używany tak, jak opisano wyżej. Poza tym może być wykorzystywany w sposób dowolny jako rejestr uniwersalny.
Słowo stanu programu (ang. program status word) - PSW - jest 8-bilowym rejestrem (SFR - adres ODOH, adresowany bitowo), złożonym z pojedynczych znaczników informujących o przebiegu oraz wyniku operacji arytmetycznych i logicznych (rys. 25). Znaczenie poszczególnych bitów słowa stanu jest następujące:
PSW.O (P) - znacznik parzystości (ang. parity flag), ustawiany
w każdym cyklu maszynowym; wskazuje parzystą (P = 0) lub nieparzystą (P = 1) liczbę jedynek w akumulatorze;
PSW.l
- nie używany;