LISTA ROZKAZÓW i TRYBY ADRESOWANIA

Podobne dokumenty
LISTA ROZKAZÓW i TRYBY ADRESOWANIA

Adresowanie. W trybie natychmiastowym pole adresowe zawiera bezpośrednio operand czyli daną dla rozkazu.

Architektura komputerów

Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne

Programowanie mikrokontrolerów (CISC)

Architektura komputerów. Asembler procesorów rodziny x86

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

Lista rozkazów mikrokontrolera 8051

Struktura i działanie jednostki centralnej

Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

architektura komputerów w 1 1

Programowanie mikrokontrolera 8051

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze.

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

ARCHITEKTURA PROCESORA,

Technika mikroprocesorowa I Wykład 2

Architektura typu Single-Cycle

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Architektura komputerów

Sprzęt i architektura komputerów

Asembler - język maszynowy procesora

Architektura komputerów

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A

Organizacja typowego mikroprocesora

Rozszerzalne kody operacji (przykład)

Podstawy techniki mikroprocesorowej. Dr inż. Grzegorz Kosobudzki p.311a A-5. Tel

Lista Rozkazów: Język komputera

TMiK Podstawy Techniki Mikroprocesorowej. Lidia Łukasiak

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Podstawy techniki cyfrowej Mikroprocesory. Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Sprzęt i architektura komputerów

organizacja procesora 8086

Model programowy komputera I: format rozkazów, lista rozkazów, tryby adresowania, cykl rozkazowy, realizacja programu w komputerze.

Mikrokontrolery AVR ATmega

Logiczny model komputera i działanie procesora. Część 1.

Załącznik do ćwiczenia w środowisku MASM32 wersji 10 Sterowanie przebiegiem wykonania programu

Mikrokontroler ATmega32. Tryby adresowania Rejestry funkcyjne

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

J. Duntemann Zrozumieć Assembler Leo J. Scanlon Assembler 8086/8088/80286 S. Kruk Programowanie w Języku Assembler

Programowanie niskopoziomowe

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

Język programowania: Lista instrukcji (IL Instruction List)

MIKROKONTROLERY I MIKROPROCESORY

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

MIKROPROCESORY I MIKROKONTROLERY INSTRUKCJE / KOMENDY / ROZKAZY: PRZEGLĄD I KILKA PRZYKŁADÓW DLA PRZYPOMNIENIA, GŁÓWNE REJESTRY ROBOCZE CPU:

Architektura komputerów

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe

LEKCJA TEMAT: Współczesne procesory.

Programowanie Niskopoziomowe

Obszar rejestrów specjalnych. Laboratorium Podstaw Techniki Mikroprocesorowej Instytut Mikroelektroniki i Optoelektroniki PW

Lista instrukcji mikroprocesora Programowanie w assemblerze

Pracownia elektryczno-elektroniczna klasa IV

Celem ćwiczenia jest zapoznanie z obsługą klawiatury sekwencyjnej i matrycowej w systemie DSM-51.

IV PROGRAMOWANIE MIKROKOMPUTERA Technika Cyfrowa 2. Wykład 4: Programowanie mikrokomputera 8051

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Programowalne układy logiczne

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

Mikrokontroler ATmega32. Język symboliczny

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

2 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/ / 24

INSTRUKCJE Instrukcje przeniesienia: Instrukcje konwersji: Arytmetyczne instrukcje:

Sterowanie pracą programu

Przykładowe pytania DSP 1

Architektura Systemów Komputerowych

Ćwiczenie 3. Konwersja liczb binarnych

Architektura systemów komputerowych. Lista instrukcji procesora

Mikroprocesor Operacje wejścia / wyjścia

SYSTEM MIKROPROCESOROWY

Procesory rodziny x86. Dariusz Chaberski

Struktura programu w asemblerze mikrokontrolera 8051

Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1

Programowanie Niskopoziomowe

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Mikroprocesory i mikrosterowniki

petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla

Zuzanna Hartleb i Artur Angiel

1. Operacje logiczne A B A OR B

Mikrokontrolery w systemach pomiarowo sterujących

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

dr inż. Jarosław Forenc

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Mikrokontrolery czyli o czym to będzie...

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Budowa i zasada działania komputera. dr Artur Bartoszewski

AGH Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Wprowadzenie do architektury komputerów. Model programowy procesora i jego struktura Procesory CISC i RISC

Metody Realizacji Języków Programowania

Transkrypt:

LISTA ROZKAZÓW i TRYBY ADRESOWANIA Lista rozkazów Rozkazy tworzące listę rozkazów można podzielid na kilka podstawowych grup, w zależności od ich przeznaczenia: rozkazy przesłao, kopiowania, rozkazy arytmetyczne i logiczne, rozkazy sterujące wykonywaniem programu - skoków, obsługi pętli, wywołao i powrotów z podprogramu wykonujące operacje na ciągach słów rozkazy wejścia/wyjścia rozkazy sterujące pracą procesora, inne. Rozkazy mikroprocesorów mogą byd: jednobajtowe 8-bitów, jednosłowowe np. 12, 14-bitowe, 24-bitowe wielobajtowe, 16-bitowe, 32-bitowe lub więcej 2 1

Mnemonik w języku asemblera Aby uprościd programowane w języku asemblera wprowadzono mnemonik, który zastępuje liczbę reprezentującą rozkaz procesora, słowem-kodem. Za pomocą kilku liter, kod-słowo, które oznacza konkretną czynnośd procesora zastępuje liczbę. Np. dla 8051 słowo "add" przedstawia rozkaz dodawania (ang. dodaj), czy "sub" (ang. subtract - odejmij). Mnemoniki powstały aby wyeliminowad koniecznośd programowania komputerów za pomocą wpisywania liczb, które są naturalnym kodem którego używa procesor. Zamianą mnemoników na liczby (kod maszynowy) zajmują się odpowiednie programy - assemblery. Wprowadzenie mnemoników miało wielkie zalety. Pozwoliło procesowi programowania stad się łatwiejszym i mniej zawodnym, jako że ludzie łatwiej operują na słowach wyrażających procesorowi polecenia niż na liczbowych kodach, których zapamiętanie jest czasochłonne, a używanie dużo mniej efektywne i bardziej podatne na błędy. Zestawy mnemoników różnią się w zależności od typu procesora i producenta, chod częśd pozostaje zazwyczaj niezmienna, jak dodawanie, odejmowanie, mnożenie "mul" (od ang. multiply), czy dzielenie "div" (ang. divide). Producent oferujący mikroprocesor lub mikrokontrolera w dokumentacji dokładnie opisuje poszczególne rozkazy podając mnemoniki, efekt działania rozkazu i konkretną wartośd liczbową rozkazu dla konkretnego trybu adresowania. ADD A, Rn A A + Rn 0010 1rrr SUBB A, @R0/1 A A (R0/1 ) CY 96 lub 97 INC A A A + 1 04 3 Format rozkazu Formatem rozkazu nazywamy sposób rozmieszczenia informacji w kodzie rozkazu. Rozkazy, jak każdy inny rodzaj informacji w systemie mikroprocesorowym, są przechowywane w postaci kodów binarnych. Kod rozkazu musi zawierad informacje niezbędne do jego poprawnej realizacji. Informacje te muszą byd rozmieszczone w rozkazie w określony sposób. Kod rozkazu musi zawierad określenie rodzaju wykonywanej operacji, czyli tak zwany kod operacji. Kod operacji musi byd określony w początkowej części (pierwszym bajcie lub bajtach) kodu rozkazu w celu określenia, w jaki sposób ma przebiegad dalsza realizacja rozkazu przez mikroprocesor. Kod rozkazu może zawierad operandy (argumenty) i/lub adresy operandów wykonywanych operacji (dotyczy to także adresów wyników). Oczywiście w przypadku rozkazów wymagających argumentów informacja ta musi byd zawarta w rozkazie. 7 7 6 Numer bitu 5 4 3 KOD 2 Rozkaz 1-bajtowy 6 5 4 KOD 3 Rozkaz 1-bajtowy 1 0 2 1 0 OPR 7 6 5 4 3 2 KOD OPERAND Rozkaz 2-bajtowy 1 0 7 6 5 4 3 2 KOD OPERAND 1 OPERAND 2 Rozkaz 3-bajtowy 1 0 4 2

Format rozkazu Rozkazy mogą byd liczbą 1-bajtową lub wielokrotnością bajtu (2- bajtowe, 3-bajtowe, ) W procesorach typu Harvard jednostka CPU może byd np. 8-bitowa ale format rozkazu może byd np. 12-bitowy, 14-bitowy lub 16- bitowy. Rozkazy wtedy są 1-słowowe (ang. one-word instruction ) lub wielosłowowe (ang. two-word instruction, ) Szerokośd rozkazu może byd większa od szerokości szyny danych CPU Rozkaz 14-bitowy 15 13 12 11 10 KOD 14 13 12 11 10 KOD 9 9 8 8 7 6 5 4 3 2 OPERAND Rozkaz 16-bitowy 7 6 5 4 3 2 1 0 OPERAND 1 0 Numer bitu Numer bitu 14 13 12 11 10 KOD 9 8 7 6 5 OPERAND 1 Rozkaz 16-bitowy 4 3 2 1 0 Rozkaz 2-słowowy 15 OPERAND 2 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 KOD OPERAND 1 OPERAND 2 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OPERAND 3 Numer bitu Numer bitu Numer bitu 5 Rozkazy przesłao, kopiowania Wpisz do rejestru konkretną wartośd (MOV, LOAD, LD) Wpisz do pamięci konkretną wartośd Ładuj do rejestru roboczego zawartośd pamięci lub ładuj do pamięci zawartośd rejestru roboczego (ST) Kopiowanie (przesuwanie) danych z jednego miejsca pamięci w inne miejsce (MOV) Kopiowanie (przesuwanie) danych z układów (IN, OUT) wejścia/wyjścia do pamięci lub do rejestrów roboczych Zamiana zawartości dwóch rejestrów lub komórek pamięci (XCH) Zamiana bitów w rejestrze lub komórce pamięci (SWAP) 6 3

Rozkazy logiczne Rozkazy logiczne operujące na bitach AND, OR, XOR, NOT, ustaw bit, zeruj bit (AND, OR, XOR, ANL, ORL, XRL, CPL, SETB, CLR, SBI, CBI, TEST, NOT) Rozkazy logiczne operujące na bajtach, słowach AND, OR, XOR, NOT, przesunięcie w prawo, lewo (RL, RRC, ROL, ROR, LSL, SHL, SRL) 7 Rozkazy arytmetyczne dodawanie, odejmowanie, (ADD, ADC, SUB, SBC) mnożenie, dzielenie, (MUL, DIV) zwiększanie lub zmniejszanie o 1, (INC, DEC) porównywanie liczb, (CMP, CP, CPI) zamiana (konwersja) liczb, (DA, CBW, CWD) rotacje, przesunięcie, (RL, RRC, ROL, ROR, LSL) negacja lub przekształcenie na liczbę w kodzie uzupełnieo do dwóch U2 (NEG) Operacje arytmetyczne mogą byd wykonywane: na liczbach bez znaku, na liczbach ze znakiem, na liczbach kodowanych (np. w kodzie BCD, kodzie U2) na liczbach stałoprzecinkowych, zmiennoprzecinkowych 8 4

Skoki warunkowe i bezwarunkowe Skok warunkowy skok do rozkazu poprzedzonego etykietą jeśli warunek jest prawdziwy Skoki warunkowe (ang. jump, branch) od bitu (1 lub 0), bajtu lub słowa (>, <, =, =>, <=,, =0, 0) (JB, JNB, JZ, JNZ, SBIC, SBIS, BRMI) Skoki od przepełnienia, parzystości Skoki bezwarunkowe w konkretne miejsce programu skoki krótkie i skoki dalekie, wywołanie podprogramu, zgłoszenie przerwania (SJMP, LJMP, JMP, CALL, LCALL, ICALL, GOTO, SKIP) wyjście z podprogramu, wyjście z programu obsługi przerwania (RET, RETURN, RETI) 9 Pętle programowe Rozkazy realizujące pętle programowe lub wspomagające realizację pętli (LOOP) Rozkazy kooczące pętle (LOOPZ, LOOPNZ) 10 5

Rozkazy sterujące pracą procesora Przełączanie trybów pracy procesora (SLEEP) Przełączanie procesorów, np. włączenie FPU(ESC) Zablokowanie dostępu do magistrali (LOCK) Zatrzymanie procesora (HALT, HLT) Rozkaz nic nie rób (NOP) Rozkaz oczekiwania na zdarzenie (WAIT) Rozkazy operujące na znacznikach w rejestrze stanu ustawianie i zerowanie bitu (CLI, CLD, STD, SDI) Zerowanie watchdoga (WDR, CLRWDT) 11 Złożone instrukcje Zapisywanie wielu rejestrów na stos lub ściąganie ze stosu jednym rozkazem Kopiowanie (przesuwanie) dużych bloków pamięci Złożone instrukcje na liczbach zmiennoprzecinkowych, Obliczanie wybranych funkcji matematycznych (np. sin(x), cos(x), pierwiastek) Wykonywanie elementarnych instrukcji testowania i ustawiania Instrukcje, które korzystają z jednostki ALU i pobierają dane z pamięci a nie z rejestrów Instrukcje typu SIMD (wiele danych jedna instrukcja), instrukcje typu MMX 12 6

Przetwarzanie łaocuchów danych Łaocuch to ciąg kolejnych bajtów, słów lub podwójnych słów w pamięci. Bloki te mogą się składad z: wartości liczbowych wartości lub wartości alfanumerycznych Wypełnianie łaocucha wartością (STOSB, STOSW) Kopiowanie łaocuchów (MOVSB, MOVSW) Odczyt elementu z łaocucha (LOADSB, LOADSW) Porównywanie łaocuchów (CMPSB, CMPW) Przeszukanie łaocucha (SCASB, SCASW) 13 Rozkazy operacji na stosie STOS jest to miejsce w pamięci danych do przechowywania pewnych danych takich jak rejestry lub zawartości komórek pamięci. Stos - liniowa struktura danych, znaczeniowo odpowiadająca nazwie: dane dokładane są na wierzch stosu, i ściągane również z wierzchołka stosu. Stosuje się też określenie stosu jako pamięd typu LIFO (ang. Last In First Out). Operacje na stosie: Deklarowanie segmentu stosu początku, rozmiaru Odkładanie danych na stos (PUSH) Zdejmowanie danych ze stosu (POP) 14 7

Tryby adresowania Przez tryby adresowania rozumie się sposób wskazywania na argumenty wykorzystywane w trakcie wykonywania instrukcji. Standardowe mikrokontrolery wykorzystują kilka różnych sposobów adresowania. Jednak ciągły rozwój techniki mikroprocesorowej powoduje wzbogacanie o nowe możliwości adresowania. Nowe mikrokontrolery typu embedded posiadają tak rozbudowane możliwości adresowania jak procesory stosowane we współczesnych komputerach. 15 Tryb adresowania Argumenty operacji mogą znajdowad się w kodzie programu, w rejestrach procesora lub w pamięci. W zależności od miejsca, gdzie znajdują się argumenty, stosuje się odpowiednie rozkazy, które występują w różnych odmianach. Mówimy, że są to rozkazy o różnych trybach adresowania (ang. addressing mode). Każdy układ mikroprocesorowy ma ustaloną liczbę trybów adresowania zależną od architektury procesora. Nie każdy rozkaz ma wszystkie tryby adresowania 16 8

Tryb adresowania Tryb adresowania (z angielskiego addressing mode), sposób obliczania adresów argumentów rozkazów określony przez częśd operacyjną rozkazu. Można rozróżnid następujące podstawowe tryby adresowania: a) adresowanie natychmiastowe, w którym argument rozkazu zawarty jest w kodzie rozkazu, b) adresowanie bezpośrednie, w którym kod rozkazu zawiera adres komórki pamięci przechowującej argument rozkazu, c) adresowanie rejestrowe, w którym w kodzie rozkazu określony jest rejestr zawierający argument rozkazu, d) adresowanie pośrednie (rejestrowe pośrednie), w którym kod rozkazu zawiera określenie rejestru, bądź rejestrów zawierających adres komórki pamięci z argumentem rozkazu, e) adresowanie indeksowe z przemieszczeniem, w którym adres argumentu przechowywanego w pamięci obliczany jest jako suma zawartości rejestru i wartości (tzw. przemieszczenia) określonych w kodzie rozkazu. f) adresowanie pośrednie z predekrementacją g) adresowanie pośrednie z postinkrementacją 17 Podstawowe tryby adresowania adresowanie natychmiastowe adresowanie bezpośrednie adresowanie rejestrowe adresowanie pośrednie adresowanie indeksowe z przemieszczeniem Opis rysunkowy E-3, trybów WIEiK-PK adresowania 18 9

Tryb natychmiastowy W trybie natychmiastowym pole adresowe zawiera bezpośrednio operand (ang. operand) czyli daną dla rozkazu. Długośd operandu zależy od kodu operacji lub od kodu operacji i dodatkowego pola sterującego w rozkazie. Ten tryb adresowania stosujemy, gdy np. chcemy bezpośrednio z rozkazu ( bez odwoływania się do pamięci) załadowad do rejestru prostą daną - bajt lub parę bajtów. 8051 8086 AVR PIC ARM mov A,#23h mov AX,20 ADDI r1, 15 Add A, #10 mov BH,4Ah ORI r1, 30 Mov DPTR,#1FFAh ADDI r1, 124 19 Adresowanie bezpośrednie Adresowanie bezpośrednie jest najbardziej podstawowym trybem adresowania. W tym trybie zawartośd pola adresowego stanowi już finalny adres argumentu rozkazu w pamięci operacyjnej i nie podlega przekształceniu. Ten tryb stosujemy, gdy nie zależy nam na tym, aby nasz program był przesuwalny w pamięci operacyjnej, lecz jest przeznaczony do wykonania przy zapisie w ściśle określone miejsce w pamięci. 8051 8086 AVR PIC ARM mov A,23h mov AX, CS:[40] OR R18,R19 Add A, P0 mov AX, [40] INC R4 mul AB OUT PortA,R17 ADD R16,R17 20 10

Adresowanie pośrednie Przy adresowaniu pośrednim rozkaz zawiera adres komórki pamięci operacyjnej, w której zawarty jest finalny adres operandu rozkazu. W tym przypadku komórka pamięci wskazana przez adres rozkazu pośredniczy w określeniu finalnego adresu. Ten tryb stosujemy, gdy chcemy, aby finalny adres operandu rozkazu mógł byd dynamicznie wstawiony do komórki pośredniczącej w adresowaniu w czasie wykonywania programu. Może tak byd, gdy ten adres zależy od jakichś testów na wyniku operacji poprzedzającego rozkazu. 21 Adresowanie indeksowe Adresowanie indeksowe jest inaczej nazywane modyfikacją adresu przez indeksowanie. W tym trybie wykorzystuje się specjalne rejestry procesora tzw. rejestry indeksowe (ang. index registers), które zawierają przesunięcie, który trzeba dodad do adresu istniejącego w rozkazie aby wyliczyd adres finalny operandu. Ten tryb adresowania pozwala przesunąd adres zawarty w rozkazie o wartośd rejestru indeksowego. Używając tego trybu we wszystkich rozkazach programu, można osiągnąd możliwośd wykonania programu przy załadowaniu w dowolne miejsce pamięci. W tym celu należy napisad program wstawiając do rozkazów programu adresy, które odpowiadają umieszczeniu pierwszej instrukcji programu pod adresem zerowym w pamięci. Następnie wiedząc, pod jakim finalnym adresem jest umieszczony pierwszy rozkaz programu, umieszczamy ten adres w rejestrze indeksowym. Dzięki operacji indeksowania rozkazów programu, wszystkie adresy operandów zostaną przesunięte o tę sama wartośd - stad nazwa zawartości rejestru indeksowego : przesunięcie. Taka organizacja przesuwalności programu w pamięci nosi nazwę dynamicznej relokacji programu w pamięci. Rejestrów indeksowych w procesorze jest zwykle wiele, gdyż mogą one byd przydzielone różnym programom lub fragmentom programów, które są wykonywane w tym samym okresie czasu. W tym przypadku, rejestr indeksowy do użycia, może byd określony przy pomocy specjalnego pola wspomagającego kodowanie trybu adresowania w innym polu rozkazu. 22 11

Adresowanie względne Adresowanie względne polega na modyfikacji adresu zawartego w rozkazie przez aktualną zawartośd licznika rozkazów. Ten tryb adresowania dostarcza innego sposobu osiągnięcia dynamicznej przesuwalności adresów dostępu do danych, tj. gdy nie chcemy lub nie możemy znad przesunięcia całości programu w stosunku do adresu zerowego. Przy tym trybie adresowania, finalny adres danej jest wyliczany względem bieżącej zawartości licznika rozkazów, a więc do rozkazu wstawiamy przesunięcie danej w programie względem adresu następnego rozkazu, np. n komórek w przód lub w tył. Musimy tylko zapewnid, aby dana została umieszczona w spodziewanym miejscu pamięci, a ściślej w spodziewanej odległości od rozkazu, który z tej danej korzysta. Można to osiągnąd przez zaplanowanie w jakiej odległości od danego rozkazu, będzie umieszczony obszar danych programu. 23 Adresowanie pośrednie indeksowe Adresowanie pośrednie indeksowe zapewnia jednoczesną możliwośd zastosowania w programie adresowania pośredniego z modyfikacją adresu odczytanego z komórki pośredniczącej poprzez zawartośd rejestru indeksowego. Umieszczony w rozkazie adres wskazuje na komórkę przechowującą adres danej, który może byd tam wstawiany dynamicznie jako wynik obliczeo programu. Do tego adresu stosowane jest następnie indeksowanie poprzez zawartośd rejestru indeksowego. Zawartośd rejestru indeksowego może też byd wstawiona dynamicznie w wyniku działania innej części programu. W zależności od zawartości rejestru indeksowego trafiamy zatem do innej komórki zawierającej operand. Adresowanie pośrednie indeksowe pozwala na dwupoziomowe dynamiczne określanie adresu danych w wyniku obliczeo wykonanych w poprzedzających fragmentach programu, metodą wpisania pewnego adresu bazowego a następnie modyfikacji tego adresu bazowego przez rejestr indeksowy. 24 12

Adresowanie indeksowe pośrednie Adresowanie indeksowe pośrednie zapewnia najpierw modyfikację adresu zawartego w rozkazie przez zawartośd rejestru indeksowego a następnie tak otrzymany adres jest stosowany do wskazania komórki pamięci, w której jest przechowywany finalny adres operandu rozkazu. Adresowanie indeksowe pośrednie pozwala na dynamiczne określanie adresów danych w programie w czasie wykonania programu, przy zapewnieniu przesuwalności w pamięci całego programu. Dla tego celu, program piszemy począwszy od adresu zerowego w pamięci stosując adresowanie indeksowe do wszystkich rozkazów z wyjątkiem tych, które działają na danych wybieranych dynamicznie. Te rozkazy adresujemy poprzez użycie adresowania pośredniego indeksowego, umieszczając adres komórki pośredniczącej (względem adresu zero) w bieżącym rozkazie. Po załadowaniu programu do pamięci, wpisywana jest do rejestru indeksowego wartośd przesunięcia początku programu w stosunku do adresu zerowego ( robi to program ładujący). W trakcie wykonywania programu wszystkie adresy programu, łącznie z tymi, gdzie zastosowano adresowanie pośrednie oraz tymi. które wpisują adres danej do komórki pośredniczącej, zostaną zmodyfikowane. 25 Adresowanie rejestrowe Adresowanie rejestrowe stosuje się, gdy dana dla rozkazu jest przechowywana w rejestrze. Częśd adresowa rejestru zawiera wtedy jedno lub więcej pól, w których znajdują się identyfikatory rejestrów. Adresowanie rejestrowe jest często stosowane w tym samym rozkazie razem z innymi trybami adresowania dotyczącymi pamięci operacyjnej. Wówczas rozkaz dotyczy zarówno pamięci operacyjnej jak i rejestrów procesora. 8051 8086 AVR PIC ARM add A,R0 mov AX,CX mov A, R0 26 13

Adresowanie pośrednie rejestrowe Adresowanie pośrednie rejestrowe polega na tym, że jako miejsce pobrania finalnego adresu operandu rozkazu stosuje się rejestr procesora, którego identyfikator umieszczony jest w polu adresowym rozkazu. Przy pomocy tego trybu adresowania można dynamicznie określid finalny adres operandu poprzez odpowiednie załadowanie zawartości rejestru, w zależności od przebiegu obliczeo w programie. 27 Tryby adresowania 8051 Adresowanie rejestrowe operandem instrukcji jest jeden z rejestrów R0...R7 z aktywnego banku rejestrów, akumulator, rejestr B lub wskaźnik danych DPTR Adresowanie bezpośrednie operand jest jawnie podanym 8 bitowym adresem rejestru SFR, rejestru dolnego obszaru RAM lub bitu adresowalnego bezpośrednio Adresowanie natychmiastowe operandem jest stała (8 lub 16 bitowa) umieszczona w kodzie programu (pamięd ROM) Adresowanie pośrednie określenie adresu za pomocą zawartości R0 lub R1 (z aktywnego banku rejestrów) odwołanie do przestrzeni 256 bajtów Adresowanie sumą zawartości rejestru bazowego i indeksowego służy do kopiowania bajtu z pamięci programu. 28 14

Tryby adresowania 8051 Mikrokontroler 8051 realizuje następujące tryby adresowania: natychmiastowe mov R0,#2Ah, mov 30h,#100, add A, #1Ah, mov DPTR,#2FFAh rejestrowe mov A,R0, add A,R5 bezpośrednie mov R0,2Ah, mov 30h,32h, add A,32h, clr A, rrc A pośrednie zawartością rejestru mov A,@R0, mov @R1,P3, add A, @R1, movx @R0, A pośrednie sumą zawartości rejestru bazowego i indeksowego movc A, @A+PC, movx A, @A+DPTR, movx @A+DPTR,A Rozkazy w 8051 mogą byd 1, 2 lub 3-bajtowe 29 Tryby adresowania 8051 Immediate Addressing MOV A,#20h Direct Addressing MOV A,30h Indirect Addressing MOV A,@R0 External Direct MOVX A,@DPTR Code Indirect MOVC A,@A+DPTR 30 15

Rozkazy i tryby adresowania 8086 Dla 8086 liczba bajtów rozkazu zależy od rodzaju rozkazu i może wynosid od jednego do sześciu. Pierwszy bajt zawiera sześciobitowy kod operacji oraz dwa bity. Bit D określa kierunek transmisji (0 - wynik operacji jest przesyłany z rejestru do pamięci, 1 - z pamięci do rejestru). W zależności od wartości tego bitu w rozkazie rozróżniane są operandy źródłowe i operandy przeznaczenia. Bit W określa długośd operandu danego rozkazu (0 - operacje bajtowe, 1 - operacje na słowie 16-bitowym). Jeżeli rozkaz jest wielobajtowy, to drugi bajt rozkazu określa sposób adresowania argumentów. Zawiera on trzy grupy bitów dwubitowa grupa MOD określa tryb adresowania trzybitowa grupa REG określa numer rejestru, w którym znajduje się operand trzybitowa grupa R/M określa sposób wyznaczenia miejsca operandu 7 6 5 4 3 2 1 0 KOD D W 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Rozkaz 1-bajtowy MOD REG R/M KOD D W przemieszczenie 7 6 5 4 3 2 1 0 dana KOD D W MOD REG R/M Rozkaz 6-bajtowy Rozkaz 2-bajtowy 31 Tryby adresowania 8086 Mikroprocesor 8086 realizuje następujące tryby adresowania: natychmiastowe rejestrowe bezpośrednie pośrednie bazowe indeksowe indeksowo-bazowe 32 16

Tryby adresowania 8086 Adresowanie natychmiastowe W adresowaniu natychmiastowym argument pobierany jest bezpośrednio z rozkazu. W tym trybie wskazywany jest wyłącznie operand źródłowy. Np. MOV AX, 20 w rejestrze AX zostanie zapisana liczba 20. Adresowanie rejestrowe W adresowaniu rejestrowym operandy znajdują się w rejestrach wewnętrznych mikroprocesora. Jeżeli operand znajduje się w pamięci, to zespół wykonawczy EY oblicza jego 16-bitowy adres (przesunięcie) wewnątrz segmentu. Zespół BIU oblicza adres rzeczywisty na podstawie otrzymanego przesunięcia (adresu efektywnego EA) i zawartości wybranego rejestru segmentowego. Np. MOV AX, BX w rejestrze AX zostanie zapisana zawartośd rejestru BX. Adresowanie bezpośrednie W adresowaniu bezpośrednim adres operandu znajduje się bezpośrednio w rozkazie. Np. MOV AX, [40] w rejestrze AX zostanie zapisana zawartośd komórki pamięci (segment danych) o adresie 40. Standardowy adres operandu jest przesunięciem w segmencie danych (ds), można to nadpisad poprzez wskazanie innego segmentu. Np. MOV AX, CS:[40] - rejestrze AX zostanie zapisana zawartośd z komórki pamięci (segment PROGRAMU(kodu)) o offsecie 40. Adresowanie pośrednie W trybie adresowania pośredniego odwołujemy się do jednego z rejestrów roboczych procesora (np. BX) lub do komórki pamięci (np.19). W rejestrze (BX) zapisany jest numer komórki pamięci, do której trzeba sięgnąd aby odczytad tam zawarty adres i przenieśd do drugiego rejestru (AX). Dla adresowania pośredniego z pamięci odczytujemy numer komórki pamięci z dwóch komórek (komórki 19 i komórki 20) w taki sposób, że zawartośd tej pierwszej (19) stanowi ważniejszą częśd tego numeru, zaś zawartośd drugiej komórki (20) mniej ważną częśd tego numeru. Dalej postępujemy podobnie jak przy adresowaniu pośrednim z rejestru przenosimy zawartośd do rejestru AX. Np. MOV AX, [CX] w rejestrze AX zostanie zapisana zawartośd komórki pamięci o adresie, który znajduje się w rejestrze CX. Wszystkie rejestry wskazują offset w segmencie danych (ds), poza rejestrem bp, który jest przesunięciem w segmencie stosu (ss). Można to nadpisad określając segment w rozkazie. Np. MOV AX, ss:[cx] - w rejestrze AX zostanie zapisana zawartośd komórki pamięci z segmentu stosu o adresie, który znajduje się w rejestrze CX. 33 Tryby adresowania 8086 Adresowanie bazowe Adresowanie bazowe jest to rodzaj adresowania pośredniego, gdzie rozkaz wskazuje na jeden z rejestrów bazowych BX lub BP i może zawierad 8-; lub 16-bitową wartośd stanowiącą lokalne przemieszczenie. Adresem efektywnym jest suma zawartości rejestru bazowego i przemieszczenia. Np. MOV AX, [BP] Adresowanie indeksowe Adresowanie indeksowe jest rodzajem adresowania pośredniego, gdzie adres efektywny jest sumą zawartości rejestru indeksowego SI lub DI i lokalnego przemieszczenia. Np. MOV AX, [SI] Adresowanie bazowo-indeksowe W adresowaniu bazowo-indeksowym, adres efektywny jest sumą zawartości jednego z rejestrów bazowych, jednego z rejestrów indeksowych i lokalnego przemieszczenia. Np. MOV AX, [SI+BP] 34 17