Professional Documents
Culture Documents
Treść wykładów:
by Mirosław Szczepaniak
Wykład 1 2.10.2007
Przelicznik:
Procesor:
PROGRAM
DATA BUS 8b
pamięć
programowa
Układ
ADDRESS BUS 16b
sterowania
zegar
Podstawowy system mikroprocesorowy
DATA BUS
mikroprocesor
Cykl maszynowy:
Cykl maszynowy to cykl, podczas którego następuje wymiana danych między procesorem a
pamięcią lub układem wejścia wyjścia (odczyt albo zapis).
Fazy:
1c = N · Tosc
c - cykl maszynowy
N = 1, 2, 3, 4 ....
Tosc - okres oscylatora
Wykład 2 9.10.2007
1. Czas dostępu
tacc - czas dostępu - czas odpowiedzi pamięci od momentu żądania danych do momentu ich
otrzymania
2. Pojemność
2n+1
N
...
...
ADDRESS BUS ...
...
...
...
0
0000
Pamięć stała:
1.
● ROM - programowane przez producenta pamięci w czasie produkcji, czasami określana jako
MROM (Mask programmable ROM).
● PROM (ang. Programmable ROM) - pamięć która może zostać zaprogramowana. Pierwsze
pamięci tego typu były programowane przez przepalenie cieniutkich drucików
wbudowanych w strukturę (tzw "przepalanie połączeń")
● EPROM (ang. Erasable Programmable ROM) - pamięć, do której zaprogramowania
potrzebne jest specjalne urządzenie, zwane programatorem PROM (PROM Programmer
albo PROM Burner) kasowana przez naświetlanie ultrafioletem
2
● E PROM (ang. Electrically Erasable Programmable ROM) - pamięć kasowalna i
programowalna elektrycznie.
2.
● FLASH - pamięć kasowalna i programowalna elektrycznie
ASEMBLER
Język asembler
mnemonic
● instrukcje transferu
○ mov _,_ (w procesorach 51 po prawej stronie przecinka źródło, po lewej komórka
← docelowa),
○ movc _,_
○ movx _,_
○ push
○ pop
● instrukcje arytmetyczne
○ add _,_ (suma)
○ subb _,_ (różnica)
○ mul _,_ (iloczyn)
○ inc _ (inkrementacja)
● instrukcje logiczne
○ anl _,_ (iloczyn logiczny)
○ orl _,_ (suma logiczna)
○ RR _,_ (rotacja w prawo)
● instrukcje sterujące
○ bezwarunkowe
■ ljmp _ (long jump - skok do etykiety _)
■ RET
○ warunkowe
■ jb _,_ (jump if direct bit is set - skok warunkowy, jeśli docelowy bit jest 1)
● instrukcje bitowe
○ setb _ (ustaw dany bit na 1)
○ cpl _ (dopełnienie danego bitu, negacja)
(więcej instrukcji na końcu)
Adresowanie
Adresowanie bezpośrednie
np.
1. mov 86h,C8h
2. mov 43h,C8h
Adresowanie pośrednie(dotyczy HIGH RAM i LOW RAM)
Adresowanie pośrednie jest wygodne gdy pamięć jest zalokowana jako tablica.
W procesorach typu 51 do adresowania pośredniego używa się rejestrów R0-R1, np.:
mov R0,#07h
mov @R0,a
w adresowaniu bezpośrednim odpowiadałoby to instrukcji:
mov 07h,a
# - oznacza, że za nim stoi wartość ← adresowanie natychmiastowe
@ - nakazuje wzięcie zawartości danego rejestru
Jeśli użyto rejestrów R (tylko w procesorach 51) to mamy doczynienia z adresowaniem
rejestrowym. W procesorach rodziny 51 wyróżniamy 4 banki rejestrów jak poniżej:
...
1
R2
R1
R0
R7
R6
R5
R4 0
R3
R2
R1
R0
00h
Wykład 3 16.10.2007
Program 1
Program ma za zadanie wysyłać z portu P4 na zmianę same 0 albo same 1.
P4
μC
piny wyjściowe
1. Dyrektywa 'ORG _' wskazuje adres w pamięci, gdzie ma zacząć się program. Podobne
działanie ma dyrektywa 'CODE AT _'.
2. Mnemoniki 'mov P4,#FFh' i 'mov P4,#00h' nakazują przekazanie do portu P4 najpierw
samych jedynek, a później samych zer.
3. 'ljmp petla' nakazuje skok bezwarunkowy do etykiety 'petla'. Użycie tej instrukcji z
etykietą symboliczną jest możliwe tylko po ustaleniu adresu, gdzie zaczyna się program.
Powyższy przykład jest poprawny, aczkolwiek należy zwrócić uwagę, że na tak banalne zadanie
zużywana jest cała moc obliczeniowa procesora.
Program 2
Program ma przesyłać informacje z portu P5 do portu P4 zgodnie z wykresem:
OUT
FFh P5 P4
80h μC
80h FFh IN
Rejestr akumulatora
7 0
128 64 32 16 8 4 2 1
MSB LSB
Pamiętając, że rejestr akumulatora jest 8-bitowy, należy tylko sprawdzić, czy na ostatnim bicie jest
jedynka. Jeśli tak, mamy wartości z zakresu 80h-FFh, więc na wyjściu musi być 80h. Jeśli jest 0, na
wyjście przekazujemy sygnał wejściowy.
Skok warunkowy 'jb acc.7, high' - sprawdza czy siódmy bit rejestru akumulatora jest jedynką,
jeśli tak następuje skok do etykiety high, jeśli nie, program działa dalej.
Podobnie jak w poprzednim programie, tutaj także na bardzo proste zadanie jest zużywane 100%
mocy obliczeniowej procesora.
PORTY
Bramki dwustanowe:
RAM
IN
Aby uniknąć powyższych przypadków stosuje się bramki trzystanowe. Oprócz stanów
logicznych 0 i 1, występuję także trzeci stan - stan wysokiej impedancji (HZ). Bramka jest wtedy
wyłączona, a wyłączone tranzystory MOS dają impedancję rzędu MΩ.
Logika sterująca
CS - Chip Select
Port wejściowy
7
mov a,@DPTR
...........
I7 ................. I0
CL
Dekoder adresowy
ADDRESS BUS
Data Pointer (DPTR) - jedyny 16-bitowy rejestr w procesorach 5, wskazuje na adres w pamięci
zewnętrznej, który przekazywany jest przez 16-bitową szynę danych. Służy do adresowania
indeksowego. Zatem powyższy mnemonik nakazuje przekazanie zawartości DPTR do akumulatora.
Port wyjściowy
O7 ............... O0
CL CL (clock) - zegar
Dekoder adresowy
ADDRESS BUS
Wykład 4 23.10.2007
Port dwukierunkowy
DATA BUS
μC
IN OUT
M ULTIPLEKSER
D0 - D7
CS R/W
+Vcc
bramka 3-stanowa
rezystor pull-up
Q
INTERNAL
DATA BUS D
OUTPUT (PIN)
Q'
bramka 3-stanowa
Rezystor pull-up/pull-down (podciągający) - rezystory, których jeden koniec podłączony jest albo
do źródła napięcia (rezystor pull-up) albo do masy (rezystor pull-down).
Zastosowania:
● „czyszczenie” szyny danych z szumów powstałych, gdy podłączone do niej urządzenia
znajdują się w stanie wysokiej impedancji,
● likwidowanie rezonansu w liniach długich
Linią długą jest każde urządzenie (pierwotnie linie przewodowe), w którym wymiar długości,
porównywalny jest z długością fali przebiegu elektrycznego rozchodzącego
się w urządzeniu. Przykładem linii długich są m.in. kable koncentryczne
Program 3
Program ma spowodować świecenie się kolejnych diod.
P4.0
.... ....
P4.7
μC
Wersja 1
1 1 1 1 1 1 1 0 ACC
F E
Wersja 2
Wprowadza pętlę opóźniającą, aby efekt działania programu był widoczny
djnz _,_ - (decrease and jump if bit is not 0) - odejmuje 1 i sprawdza czy bit jest zerem, jeśli nie
idzie do podanej etykiety
Zatem w wierszach 11.-12. przypisujemy pewne liczby do rejestrów R1 i R2. W wierszu 13.
mamy pętlę, w której każdym obiegu następuje pomniejszenie wartości w R1. Gdy dojdzie do 0,
pętla idzie dalej. Zauważmy, że dla zanim zostanie wykonana instrukcja w wierszu 15., pętla z
wiersza 13. obiegnie 250 razy. Wiedząc, że wykonanie instrukcji 'djnz' trwa 2 cykle maszynowe
(1 cykl to ok. 1μs),a - 'mov' 1 cykl z łatwych obliczeń wynika, że pętla DELAY opóźnia działanie
programu o ok. 100 ms.
Mapa pamięci
Przykład - obsługa wyświetlacza 8x8. Mamy dwa wyjścia, jedno obsługuje kolumny, drugie
wiersze.
C000h IN
7FFFh
Program
(ROM)
movx @DTPR,a
DATA BUS
ADDRESS BUS
dekoder
adresowy
urządzenie 1
.....
urządzenie n
FFFFh
A11 D7
Zaprojektować dekoder, który będzie rozróżniał do którego urządzenia będą wysyłane dane.
FFFFh 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
8FFFh 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1
8000h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
7FFFh 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
0FFFh 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
... ... ... ... ...
0000h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
LSB 0 3 4 7 8 11 12 15 M SB
Patrząc na najstarszy bit (15) widzimy, że pokazuje on wartość 0 dla pierwszej połowy przestrzeni
adresowej (gdzie znajduje się pamięć ROM), natomiast 1 dla drugiej (pamięć RAM), zatem nasz
układ mógłby wyglądać następująco:
Jeśli na A15 jest:
A0 A11A15
A11 D7 - 0 → 0 na ROM → ROM aktywny
1 na RAM → RAM nieaktywny
.... RAM .... - 1 → 0 na RAM → RAM aktywny
A0 D0 1 na ROM → ROM nieaktywny
CS
Rozwiązanie spełnia warunki zadania,
A11
jednak powoduje, że pamięć ROM
D7
i RAM zajmują po połowie przestrzeni
.... ROM .... adresowej, a nie tyle, ile było
A0 D0 początkowo zarezerwowane (dekoder
CS niepełny).
ADDRESS
BUS
DATA BUS
DEKODER
Dekoder niepełny - dekoder, który rezerwuje całą przestrzeń adresową, uniemożliwiając dalszą
rozbudowę systemu.
Dekoder pełny - dekoder, który odzwierciedla w przestrzeni adresowej w skali 1:1 przestrzeń
adresową urządzeń, którymi steruje. Jest możliwa dalsza rozbudowa systemu
Projektując dekoder pełny, jeszcze raz należy spojrzeć na tabele z poprzedniej strony. Zwróćmy
uwagę, że 4 najstarsze bity (12-15) jednoznacznie wskazują miejsca pamięci, gdzie znajdują się
pamięci ROM i RAM.
Zatem nasz dekoder mógłby wyglądać tak:
A15 CS (RAM)
A14
A13
CS (ROM)
A12
Dekodowane są 4 najstarsze bity - dla ROM pokazują 0000, dla RAM → 0001. Reszta przestrzeni
adresowej jest wolna.
Przerwania
Procesor
Maska centralna
Maski
indywidualne
Flagi
Urządzenie
Maska centralna
Rejestr flag
Przerwanie maskowalne
Urządzenie
μP
Urządzenie
Wykład 6 06.11.2007
PUSH A
mov A, 24h
PUSH A
POP A
mov 24h, A
POP A
Main
...
...
...
... ...
[ vector1: Body1
instrukcja ...
[
przerwanie 1 [ ...
[ przerwanie 2
AP2 [ vector2:
AP1 ... ... Body2
... RETI ...
[
... [
...
RETI
...
APL2
APH2
APL1
APH1
...
● Drugie przerwanie znajduje się w hierarchii niżej lub na tym samym poziomie
Procesor ignoruje flagę, wykonuje Body1, wraca do programu głównego. Żądanie
przerwania przyjmuje dopiero podczas wykonywania następnej instrukcji.
Main
...
...
...
vector1: Body1
...
...
...
przerwanie 2 [
[ [
instrukcja
[ ...
przerwanie 1 [ RETI
AP1 [ ...
...
AP2
...
vector2: Body2
RETI
...
Na podobnej zasadzie działa wywołanie procedury (call, lcall, ...), z taką różnicą, że obsługę
przerwania kończy instrukcja RETI, a procedurę kończy RET. Podczas wykonywania procedury nie
ma także żadnej wewnętrznej flagi określającej hierarchię (jak flaga poziomu przerwania w
przypadku przerwań)
Wykład 7 20.11.2007
Rejestry adresowalne bitowo - znajdują się tam rejestry bitów, do których można odwołać się
bezpośrednio rejestr.bit (np. rejestry portów)
Rejestry nieadresowalne bitowo - nie można odwoływać się do pojedynczych bitów tych
rejestrów, należy „wyciągnąć” całą zawartość rejestru.
Spis rejestrów adresowalnych i nieadresowalnych bitowo podaje producent.
Program 4
Napisać program, który po naciśnięciu przycisku, będzie powodował zmianę stanu diody.
5V
AAA AAA
5V CPL P 5.0
P5.0 P3.2 CPL P 5.0
P3.2 BBB
P5.0
Wersja bez wykorzystania przerwań
maska
indywidualna
''1''
priority
IED
''0'' EX0
IT0 flaga przerwania
bit konfiguracyjny
CPU
(sprawdzanie flag
w każdym cyklu
maszynowym)
EAL
maska centralna
(Enable All)
Flagi przerwań są ustawiane zawsze, programista nie ma na to wpływu. Może jedynie przesłonić
(lub nie) flagę maską.
Wykład 8 27.11.2007
TIMER/COUNTER
dwa 8-bitowe
rejestry liczące
flaga przerwania
CM
C/T
Może zliczać 216 cykli maszynowych (timer) lub 216 sygnałów pojawiających się na pinie (counter).
Gdy rejestry zostaną przepełnione (FFFFh) następuje wyzerowanie liczników i flaga przerwania
ustawiana jest na 1. Jednak, ponieważ możemy zmieniać zawartości rejestrów liczących, zatem
możemy skrócić cykle:
zawartość TLX i TLH zawartość TLX i TLH
FFFFh FFFFh
TFX
TFX
Rejestry konfiguracyjne
7 0
GATE C/T M1 M0 GATE C/T M1 M0 ← TMOD
rejestr nieadresowalny bitowo
M1 M0
0 0 Licznik 8-bitowy
0 1 Licznik 16-bitowy
1 1
Program 5
Program ma spowodować świecenie się kolejnych diod.
μC
01. ORG 0000h
02. LJMP 1000h
03. ORG 1000h
04.
05. MOV a,#FEh
06. MOV TMOD,#01h
07. SETB TR0
08. SETB ET0
09. SETB EAL
10. MAIN: LJMP MAIN
11.
12. ORG 000Bh
13. LJMP 2000h
14. ORG 2000h
15.
16. MOV P4,a
17. RL a
18. MOV THO,#WARTOSC1
19. MOV TL0,#WARTOSC2
20. RETI
Wykład 9 4.12.2007
Program 6
5V
P5.1
P3.2
P3.2
P5.1
Na P5.0 ma być generowany sygnał prostokątny o półokresie 1s tak jak przedstawia wykres.
Program 7 5V
5V
P5.6 Dioda ma się palić, tylko gdy przycisk jest
wciśnięty.
P3.0
Wykład 10 11.12.2007
Rejestry stanu przechowują bity stanu mówiące np. o przepełnieniu rejestrów procesora:
7 0
CY AC F0 RS1 RS0 OV F1 P ← PSW
ORG 0000h
LJMP 1000h
ORG 1000h
Bit AC - pomocniczy bit przeniesienia - spełnia podobną rolę co bit CY, tylko stosowany jest do
operacji w kodzie BCD, natomiast znacznik C - dla kodu naturalnego binarnego.
Ustawiony na 1:
● jeśli jest przeniesienie z pozycji 7. na wyższą i jednocześnie nie z 6. na 7.
● jeśli jest przeniesienie z pozycji 6. na 7. i jednocześnie nie z 7. na 8.
P - bit parzystości.
Ustawiany na 1 jeśli w wyniku jest parzysta liczba „jedynek”.
Program 8
Napisać program dodający dwie 8-bitowe liczby jak na schemacie:
→ P3 P5 → low
→ P4 P6 → high
Wersja 1
01. ORG 0000h
02. LJMP 1000h
03. ORG 0000H
Wersja 2
R1 R0 liczba 16-bitowa
+ R2 liczba 8-bitowa
R4 R5 R6
Wykład 12 8.01.2008
Przetwornik analogowo/cyfrowy
pin
Rejestr
MUX S&H ADC wyjściowy
(w 51 - ADDAT)
VREF+ VREF-
MUX - multiplekser
S&H - Sample And Hold
ADC - Analog Digital Converter - przetwornik z kompensacją wagową, najczęściej 12-14 bitowy
VREF - wartości referencyjne napięcia określające zakres przetwarzania przetwornika
Rejestr konfiguracyjny ADCON (rodzina 515)
7 0
x x x BSY ADM MX2 MX1 MX0
MX2
MX1 - sterowanie multipleksera (wybór kanału wejściowego)
MX0
Program 10
Zmierzyć wartość analogową napięcia na M6 i przesłanie na P4 wartości w kodzie BCD.
Wersja 1
Wersja 3
00. ORG 0000h
01. LJMP 1000h
02. ORG 1000h
03.
04. MOV TL0,#wartoscL
05. MOV TH0,#wartoscH
06. MOV TMOD, #01h
07. SETB TR0
08.
09. CLR ADM
10. SETB MX2
11. SETB MX1
12. CLR MX0
13.
14. SETB ET0
15. SETB EAL
16.
17. MAIN: LJMP MAIN
18.
19. ORG 000Bh
20. LJMP 2000h
21. ORG 2000h
22.
23. MOV P4,ADDAT
24. MOV TL0,#wartoscL
25. MOV TH0,#wartoscH
26. MOC DAPR,#00h
27. RETI
Wykład 13 15.01.2008
Magistrala (bus)
Magistrale:
● wewnętrzne:
○ równoległe:
■ ISA,
■ PCI,
■ AGP,
○ szeregowe:
■ 1-wire,
2
■ IC
● zewnętrzne:
○ równoległe:
■ HPIB,
■ PCMCIA,
■ Centronics,
○ szeregowe:
■ RS485,
■ USB,
■ CAN.
Magistrala równoległa:
Połączenie asynchroniczne
Interfejs szeregowy
rejestr przesuwny
zegar
B0 B7 OUT
D0 D7
zegar IN
D0 D7
Zazwyczaj transfer jest 8 bitowy lub 9 bitowy (8 bitów + bit parzystości, jak na powyższym
schemacie). Podczas trwania transmisji każdy bit jest 3 razy próbkowany. Jeśli 2 kolejne próbki nie
są takie same, to transmisja jest wstrzymywana.
Ramka transmisji - 10 bitów
Bond rate [Hz] - częstotliwość przekazywania bitów ramki (nie danych)
Master nadaje - wszystkie slave'y odbierają, po przekazaniu adresu dane odbiera tylko slave
docelowy, reszta przechodzi w stan uśpienia. Jeśli na 9 bicie paczki jest 1 → jest nadawany adres,
jeśli 0 → są nadawane dane.
Wykład 14 22.01.2008
SCL
SCL
SDA
SCL
SCL
SDA
SCL
SDA
SDA
SDA
VDD
SCL
SCL
SCL
SDA
SDA
SDA
SDA
SCL
SDA
Do innych układów Do innych układów
Master i/lub Slave Master i/lub Slave
Każdy z układów posiadających interfejs I2C ma własny adres, który jest sprzętowo ustalony przez
producenta, jakkolwiek użytkownik może wpływać na część nastawy tego adresu (np. za pomocą
DIP-switch; ustawia się zazwyczaj 3 najmłodsze bity).
Urządzenia podłączane mogą też być wykonane w różnych technologiach (np. NMOS, CMOS,
TTL, ...).
I2C jest interfejsem multi-master, tzn. że możliwe jest zastosowanie wielu układów typu master
podłączonych do jednej magistrali.
Transmisja może się odbywać bardzo wolno, można ją także wstrzymać bez żadnych konsekwencji.
W specyfikacji interfejsu nie jest określona maksymalna liczba urządzeń,które można podłączyć do
magistrali. Ograniczeniem jest tylko suma pojemności pasożytniczych i wejściowych układów,
która nie powinna przekraczać 400pF dla każdej linii sygnałowej.
Budowa portów
● Linie SDA i SCL są dwukierunkowymi liniami podłączonymi do dodatniego napięcia
zasilania przez rezystory podciągające (pull-up).
● Kiedy magistrala jest wolna obie linie są w stanie wysokim.
● Porty – typu otwarty dren (lub otwarty kolektor), tak aby można było wykonać operację
iloczynu logicznego na drucie (wired-AND).
Transmija danych
● Dane przesyłane sformatowane są w ramki o długości 8 bitów.
● Liczba przesyłanych bajtów jest zmienna i zależy od układów zastosowanych w systemie.
● Zwykle po każdym bajcie następuje jego potwierdzenie (ACK–acknowledge).
● Gdy przesyłamy słowa dłuższe niż jednobajtowe, to jako pierwszy przesyłany jest zawsze
bajt bardziej znaczący (MSB).
● Transmisja może być wstrzymana (np. gdy posiada niższy priorytet) poprzez wymuszenie
na linii SCL stanu niskiego.
SCL
SCL
Układ master synchronizuje przesył za pomocą sygnału na linii SCL. Stan na linii SDA musi być
ustalony przed pojawieniem się „1” na linii SCL i powinien trwać stabilnie przy opadającym
zboczu SCL.
SDA
SCL
Po sygnale START układ master najczęściej wysyła adres docelowego układu slave i
oczekuje potwierdzenia gotowości z jego strony za pomocą sygnału ACK. W praktyce odbiór ACK
odbywa się w taki sposób, że master ustawia linię SDA na „1” i generuje 9-ty impuls zegarowy.
Układ slave odbierając ten impuls wymusza stan niski na SDA. Ta zmiana jest traktowana jako
potwierdzenie gotowości do nadawania lub odebranie bajtu danych.
Jeśli po wysłaniu adresu slave nie generuje sygnału ACK, linia SDA musi być ustawiona
przez niego na „1”. W takim przypadku master powinien wygenerować STOP, zwalniając
magistralę. Jeśli dane są wysyłane przez slave’a a odbierane przez master’a,to wysłanie przez ten
układ bitu braku potwierdzenia jest informacją dla slave’a (nadającego dane), że zakończono
właśnie transmisję ostatniego bajtu danych. Wtedy slave zwalnia linię danych SDA, by umożliwić
układowi master wysłanie sygnału STOP.
Arbitraż przeprowadzony dla dwóch układów master: master_1 przegrywa podczas transmisji
trzeciego bitu. Dzieje się tak, ponieważ stan wewnętrznej linii danych (DANE_1) nie jest zgodny ze
stanem lini SDA. Arbitaraż przegrywa ten master, który pierwszy nada 0.
Lista rozkazów mikrokontrolerów rodziny MCS-51
Instrukcje arytmetyczne
Wykonywane Cykle Rozmiar
Mnemonik Argumenty Opis
operacje maszynowe [bajty]
''Add to acummulator'' – dodaj do akumulatora. Do wartości przechowywanej w akumulatorze dodawany jest wskazany
ADD
argument, a wynik zostaje wpisany do akumulatora.
ADD A,Rn (A)←(A)+(Rn) 1 1 Do akumulatora dodawana jest zawartość rejestru Rn.
Instrukcje logiczne
Cykle Rozmiar
Mnemonik Argumenty Wykonywane operacje Opis
maszynowe [bajty]
''Logical AND'' – iloczyn logiczny. Wykonywany jest iloczyn logiczny AND (mnożenie bitów „bit po bicie”) wskazanych
ANL
w instrukcji dwóch argumentów. Wynik operacji jest wpisywany do argumentu pierwszego instrukcji
Instrukcje transferu
Cykle Rozmiar
Mnemonik Argumenty Wykonywane operacje Opis
maszynowe [bajty]
''Move'' – przesuń, przenieś. Ogólne instrukcję MOV można zapisać jako: MOV <d> <s>, gdzie: <d> jest miejscem
przeznaczenia (''destination''), a <s> źródłem pobrania danej (''source''). W wyniku wykonania instrukcji MOV zawartość
MOV źródła <s> zostaje skopiowana do obiektu przeznaczenia <d>. We wszystkich przypadkach (oprócz jednego) argumentami
instrukcji MOV są wyrażenia 8–bitowe: rejestry, dane adresy pośrednie itp. Jedynie załadowanie 16–bitowego wskaźnika
adresu DPTR wymaga odpowiedniego 16–bitowego (stałej) argumentu.
MOV
addr8, Do komórki o podanym adresie zostaje wpisana
#data8 (addr8) ← data8 2 3
wartość stała.
Instrukcje sterujące
bezwarunkowe
warunkowe
Instrukcje bitowe