Rejestry procesora. Asembler CPU D0 D1 D2 D3 D4 D5 D6 D A0 A1 A2 A3 A4 A5 A6 USP (A7) SSP (A7 ) CCR SR

Podobne dokumenty
c Marek Wnuk 7 grudnia 2000

Rozszerzalne kody operacji (przykład)

Tryby adresowania procesorów rodziny ColdFire

Architektura komputerów

Budowa linii asemblera

organizacja procesora 8086

Organizacja typowego mikroprocesora

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Architektura typu Single-Cycle

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

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

Struktura i działanie jednostki centralnej

Architektura komputerów

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

Technika mikroprocesorowa I Wykład 2

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

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

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

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

ARCHITEKTURA PROCESORA,

MATERIAŁY DO ZAJĘĆ II

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

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

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

Paradygmaty programowania. Paradygmaty programowania

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

1. Wstęp Różnice pomiędzy mikrokontrolerami ST7 a ST7LITE Rdzeń mikrokontrolerów ST7FLITE... 15

architektura komputerów w 1 1

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

002 Opcode Strony projektu:

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

architektura komputerów w 1 1

Architektura komputerów

Akademia Górniczo- Hutmicza w Krakowie Katedra Elektroniki WIET

PROGRAMOWANIE NISKOPOZIOMOWE

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Lista Rozkazów: Język komputera

Sprzęt i architektura komputerów

Projektowanie. Projektowanie mikroprocesorów

Podstawy Techniki Mikroprocesorowej

Wstęp do wskaźników w języku ANSI C

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

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

Programowanie niskopoziomowe

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

Protokół komunikacyjny sondy cyfrowej CS-26/RS-485 (lub RS-232)

PROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

Tablice i funkcje. Marcin Makowski. 26 listopada Zak lad Chemii Teoretycznej UJ

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

Podstawy programowania

Kompilator języka C na procesor 8051 RC51 implementacja

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

Mikrokontroler ATmega32. Tryby adresowania Rejestry funkcyjne

Architektura komputerów. Asembler procesorów rodziny x86

Wstęp. do języka C na procesor (kompilator RC51)

2. Architektura mikrokontrolerów PIC16F8x... 13

Różności w C++ Marek Pudełko

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Systemy Operacyjne - Operacje na plikach

Stałe, tablice dynamiczne i wielowymiarowe

nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof

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

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

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

Architektura mikroprocesorów z rdzeniem ColdFire

Rozdzia l 3. Laboratorium 3. danych zawierajac

Języki programowania obiektowego Nieobiektowe elementy języka C++

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Programowanie Niskopoziomowe

Struktura mikrokontrolera MC68332

PMiK Programowanie Mikrokontrolera 8051

Mikroprocesory i mikrosterowniki

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

KURS C/C++ WYKŁAD 6. Wskaźniki

Podstawy programowania

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Technika Mikroprocesorowa II Wykład 1

Język C, tablice i funkcje (laboratorium, EE1-DI)

Algorytmy i struktury danych. wykład 1

Sprzęt i architektura komputerów

Programowanie mikrokontrolera 8051

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

Projekt prostego procesora

2 Przygotował: mgr inż. Maciej Lasota

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

Temat 7. Programowanie mikrokontrolerów z rodziny PIC16 w języku C przy użyciu HI-TECH C for PIC10/12/16

Lista instrukcji mikroprocesora Programowanie w assemblerze

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

Wskaźniki, funkcje i tablice

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

Jerzy Nawrocki, Wprowadzenie do informatyki

Systemy wbudowane Mikrokontrolery

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

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Funkcja (podprogram) void

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

Mikrokontroler ATmega32. Język symboliczny

Transkrypt:

Rejestry procesora 31 16 15 8 7 0 D0 D1 D2 D3 D4 D5 D6 D7 31 16 15 0 A0 A1 A2 A3 A4 A5 A6 USP (A7) SSP (A7 ) X N Z V C T S I2I1I0 X N Z V C CCR SR MW-ZPCiR-ICT-PWr 1

Reprezentacja instrukcji (1/2) bezadresowe (implicit address opcodes) jednoadresowe (single-address opcodes) pó ltoraadresowe (one-and-a-half-address opcodes) dwuadresowe (two-address opcodes) Przyk lady: RTS (ReTurn from Subroutine) - powrót z przerwania JMP <ea> (JuMP) - skok do adresu ADD <ea>,dn - dodanie zawartości adresu do Dn MOVE <ea>,<ea> - przes lanie zawartości jednego adresu pod drugi MW-ZPCiR-ICT-PWr 2

Reprezentacja instrukcji (2/2) RTS ((SP)) -> PC JMP <ea> <ea> -> PC ADD <ea>,dn (<ea>) + (Dn) -> Dn ADD Dn,<ea> (Dn) + (<ea>) -> <ea> MOVE <eas>,<ead> (<eas>) -> <ead> S lowo rozkazowe: kod operacji, specyfikacja rozmiaru danych, deskryptory adresu (0 2): RTS 0 % 0 1 0 0 1 1 1 0 0 1 1 1 0 1 0 1 JMP <ea> 1 % 0 1 0 0 1 1 1 0 1 1 <---ea----> ADD.B Dn,<ea> 1.5 % 1 1 0 1 <-Dn> 1 0 0 <---ea----> ADD.W Dn,<ea> 1.5 % 1 1 0 1 <-Dn> 1 0 1 <---ea----> ADD.L Dn,<ea> 1.5 % 1 1 0 1 <-Dn> 1 1 0 <---ea----> MOVE.B <eas>,<ead> 2 % 0 0 0 1 <---ead---> <---eas---> MOVE.W <eas>,<ead> 2 % 0 0 1 1 <---ead---> <---eas---> MOVE.L <eas>,<ead> 2 % 0 0 1 0 <---ead---> <---eas---> MW-ZPCiR-ICT-PWr 3

Adresowanie Przyk ladowa instrukcja: MOVE.W <skad>,<dokad> przesy la s lowo dwubajtowe (.W) z miejsca określonego deskryptorem skad do miejsca określonego przez dokad. bit: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 1 1 <---------------> <---------------> kod rozmiar przeznaczenie zrodlo oper. danych (dokad-destination) (skad-source) Deskryptor adresu (Effective Address) bit: 5 4 3 2 1 0 <---------> <---------> rejestr kod trybu MW-ZPCiR-ICT-PWr 4

Przyk lad: Tryb bezpośredni rejestru danych (data register direct) EA = Dn MOVE.W D1,D2 (D1) -> D2 3 4 0 1 <---> <---><---><---> 00 11 010 000 000 001 _rejestr zrodlowy nr 1 \ > skad tryb bezp. rejestru danych / tryb bezp. rejestru danych \ > dokad rejestr przeznaczenia nr 2 / rozmiar danych - slowo (.W) kod instrukcji MOVE MW-ZPCiR-ICT-PWr 5

Tryb bezpośredni rejestru adresowego (address register direct) Przyk lad: EA = An MOVE.W D1,A2 (D1) -> A2 00 11 010 001 000 001 _rejestr zrodlowy nr 1 \ > skad tryb bezp. rejestru danych / tryb bezp. rejestru adresowego \ > dokad rejestr przeznaczenia nr 2 / rozmiar danych - slowo (.W) kod instrukcji MOVE MW-ZPCiR-ICT-PWr 6

Tryb bezwzgl edny d lugi (absolute long) EA = ((P C) + 2) : ((P C) + 4) Przyk lad: DANEWEJ EQU $123456 MOVE.W DANEWEJ,D2 (DANEWEJ) -> D2 Kod wytworzony przez asembler 3 s lowa, 4 cykle: $3435 kod maszynowy MOVE.W z odpowiednimi trybami $0012 starsze slowo dlugiego adresu bezwzglednego $3456 mlodsze slowo dlugiego adresu bezwzglednego Oba argumenty w pami eci 5 s lów, 6 cykli: DANEWEJ EQU $123456 DANEWYJ EQU $345678 MOVE.W DANEWEJ,DANEWYJ (DANEWEJ) -> DANEWYJ MW-ZPCiR-ICT-PWr 7

Tryb bezwzgl edny krótki (absolute short) Kodowanie adresu: EA = ((P C) + 2) SEX pole trybu: %111, pole rejestru: %000 Uwaga: Przy użyciu linii adresowych do A19 w l acznie, tryb ten daje dostep do obszarów: $00000 -- $07FFF i $F8000 -- $FFFFF Mimo to, wewn etrzna reprezentacja adresów jest nadal 32- bitowa: $00000000 -- $00007FFF i $FFFF8000 -- $FFFFFFFF MW-ZPCiR-ICT-PWr 8

Tryb natychmiastowy (immediate) Kodowanie: pole trybu: %111, pole rejestru: %100 STALA EQU $55AA MOVE.W #STALA,D2 STALA -> D2 Rozmiar danych (domyślny:.w):.w s lowo 16-bitowe, EA = (P C) + 2.L d lugie s lowo (32-bitowe), EA = (P C) + 2.B 8-bitowy bajt, EA = (P C) + 3 Krótka odmiana trybu (w niektórych rozkazach): MOVEQ 8-bitowego pole danych w s lowie rozkazowym, ADDQ, SUBQ uogólnienie inkrementacji i dekrementacji 3-bitowe pola. MW-ZPCiR-ICT-PWr 9

Tryb pośredni rejestru adresowego (address register indirect) EA = (An) Przyk lad (tryb bezpośredni 4 s lowa, 5 cykli): Dane EQU $55AA #define Dane 0x55aa PortAdd EQU $FFF000 #define PortAdd 0xfff000 * Deklaracja zmiennych ORG PortAdd Port DS.W 1 short Port @ Portadd; * Przeslanie danych do portu MOVE.W #Dane,Port Port = Dane; Tryb pośredni 2 s lowa, 3 cykle: Dane EQU $55AA #define Dane 0x55aa PortAdd EQU $FFF000 #define PortAdd 0xfff000 * Inicjalizacja wskaznika short *ptr; /* rejestr A0 */ ORG ROM MOVEA.L #PortAdd,A0 ptr = (short *)PortAdd; * Przeslanie danych do portu MOVE.W #Dane,(A0) *ptr = Dane; MW-ZPCiR-ICT-PWr 10

Tryb pośredni z autopostinkrementacja (address register indirect with postincrement) Kodowanie: EA = (An) (An) + SIZE An pole trybu: %011, wskaźnik: rejestr adresowy, SIZE:.B 1,.W 2,.L 4. Przyk lad: * Deklaracje zmiennych ORG RAM * short *ptra; /* rejestr A0 */ * short *ptrb; /* rejestr A1 */ TablA DS.W 100 short TablA[100]; TablB DS.W 100 short TablB[100]; * Inicjalizacja wskaznikow ORG ROM MOVEA.L #TablA,A0 ptra = &TablA[0]; MOVEA.L #TablB,A1 ptrb = &TablB[0]; * Przepisanie elementow i przesuniecie wskaznikow MOVE.W (A0)+,(A1)+ *ptrb++ = *ptra++; MW-ZPCiR-ICT-PWr 11

Tryb pośredni z autopredekrementacja (address register indirect with predecrement) Kodowanie: (An) SIZE An EA = (An) pole trybu: %100, wskaźnik: rejestr adresowy, SIZE:.B 1,.W 2,.L 4. Przyk lad zastosowania: przepisywanie tablic w odwrotnej kolejności (przy cz eściowym pokrywaniu si e obszaru źród lowego z docelowym): Uwaga: MOVE.W -(A0),-(A1) *--ptrb = *--ptra; Ważne zastosowanie operacje na stosie: instrukcja MOVEM (MOVE Multiple) pozwala przes lać dowolny podzbiór rejestrów danych i adresowych procesora przy pomocy rozkazu z lożonego z dwóch s lów: kodu rozkazu i maski zestawu rejestrów. MW-ZPCiR-ICT-PWr 12

Tryb pośredni z przesuni eciem (address register indirect with displacement) Przyk lad: EA = (An) + ((P C) + 2) SEX * Definicja typu data_t ORG 0 typedef struct{ Dzien DS.B 1 char Dzien; Miesiac DS.B 1 char Miesiac; Rok DS.W 1 short Rok; * } data_t; Data_L EQU * Data_L = sizeof(data_t); * Deklaracje zmiennych ORG RAM data_t *ptr; /* w A0 */ Data DS.B Data_L data_t Data; * Dostep do struktury ORG ROM MOVEA.L #Data,A0 ptr = &Data; MOVE.W #1996,Rok(A0) ptr->rok = 1996; MW-ZPCiR-ICT-PWr 13

Tryb pośredni z indeksem i przesuni eciem (address register indirect with index and displacement) EA = (An) + ((P C) + 3) SEX + (Xm) SEX Przyk lad 1 bez skalowania (tablica char): * Definicja typu pomiar_t ORG 0 typedef struct{ Datas DS.B Data_L data_t Datas; Temp DS.B 24 char Temp[24]; * } pomiar_t; Pomiar_L EQU * Pomiar_L=sizeof(pomiar_t); * Deklaracje zmiennych ORG RAM * pomiar_t *ptr; /* w A0 */ * int NumerPom; /* w D1 */ * char Wynik; /* w D0 */ Pomiar DS.B Pomiar_L pomiar_t Pomiar; * Dostep do elementu tablicy wewnatrz struktury ORG ROM MOVEA.L #Pomiar,A0 ptr = &Pomiar; MOVE.L #0,D1 NumerPom = 0; * odczyt pomiaru z tablicy MOVE.B Temp(A0,D1.L),D0 Wynik=ptr->Temp[NumerPom]; MW-ZPCiR-ICT-PWr 14

EA = (An) + ((P C) + 3) SEX + (Xm) SEX SCALE Przyk lad 2 ze skalowaniem (tablica long): * Definicja typu pomiar_t ORG 0 typedef struct{ Datas DS.B Data_L data_t Datas; Temp DS.L 24 long Temp[24]; * } pomiar_t; Pomiar_L EQU * Pomiar_L=sizeof(pomiar_t); * Deklaracje zmiennych ORG RAM * pomiar_t *ptr; /* w A0 */ * int NumerPom; /* w D1 */ * char Wynik; /* w D0 */ Pomiar DS.B Pomiar_L pomiar_t Pomiar; * Dostep do elementu tablicy wewnatrz struktury ORG ROM MOVEA.L #Pomiar,A0 ptr = &Pomiar; MOVE.L #0,D1 NumerPom = 0; * odczyt pomiaru z tablicy MOVE.L Temp(A0,D1.L*4),D0 Wynik=ptr->Temp[NumerPom]; MW-ZPCiR-ICT-PWr 15

Wersja 0 (bit 8 = 0): Kodowanie indeksu pole trybu: %110, pole rejestru: numer rejestru bazowego, kolejne s lowo: parametry rejestru indeksowego, skala i 8-bitowe przesuni ecie bazowe: bit: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 D/A <-----> W/L <--> <--------------------> typ/numer/czesc skala przesuniecie bazowe rej. indeks. elem. Wersja 1 (bit 8 = 1): pole trybu: %110, pole rejestru: numer rejestru bazowego, kolejne s lowo: parametry rejestru indeksowego, skala i opcje podtrybów (ew. przesuni ecie bazowe w nastepnych s lowach): bit: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 D/A <-----> W/L <--> BS IS <--> <-----> typ/numer/czesc skala rozmiar I/IS rej. indeks. elem. przes. brak indeksowania brak rej. bazowego MW-ZPCiR-ICT-PWr 16

Pole BS IS BD SIZE I/IS Definicja wykluczenie rejestru bazowego Base register Suppress 0 = jest rejestr bazowy 1 = brak rejestru bazowego wykluczenie indeksu Index Suppress 0 = jest indeksowanie 1 = brak indeksowania rozmiar przesuniecia bazowego Base Displacement SIZE 00 = zarezerwowane 01 = zerowe przesuniecie 10 = 16-bitowe przesuniecie 11 = 32-bitowe przesuniecie wybór podtrybów Index/Indirect Selection wraz z polem IS opisane w nastepnej tablicy MW-ZPCiR-ICT-PWr 17

IS I/IS Opis trybu 0 000 brak odwo lania pośredniego 0 001 brak w CPU32 (preindeksacja bez zewnetrznego przesuniecia) 0 010 brak w CPU32 (preindeksacja z 16- bitowym zewnetrznym przesunieciem) 0 011 brak w CPU32 (preindeksacja z 32- bitowym zewnetrznym przesunieciem) 0 100 zarezerwowane 0 101 brak w CPU32 (postindeksacja bez zewnetrznego przesuniecia) 0 110 brak w CPU32 (postindeksacja z 16- bitowym zewnetrznym przesunieciem) 0 111 brak w CPU32 (postindeksacja z 32- bitowym zewnetrznym przesunieciem) 1 000 brak odwo lania pośredniego 1 001 pośrednie bez zewnetrznego przesuniecia 1 010 pośrednie z 16-bitowym zewnetrznym przesunieciem 1 011 pośrednie z 32-bitowym zewnetrznym przesunieciem 1 100 111 zarezerwowane MW-ZPCiR-ICT-PWr 18

Tryb pośredni PC z przesuni eciem (PC indirect with displacement) EA = (P C) + 2 + ((P C) + 2) SEX Odwo lanie do danych zawartych w programie; kod niezależny od po lożenia (PIC Position Independent Code): ORG ROM Napis DC.B Ala ma kota stala tablica znakowa DC.B 0 * * Dostep do pierwszego znaku napisu MOVE.B Napis(PC),D0 Przyk lad z instrukcja LEA (Load Effective Address): ORG ROM Napis DC.B Ala ma kota stala tablica znakowa DC.B 0 * * Inicjalizacja rejestru bazowego LEA.L Napis(PC),A0 (PC)+offset->A0 * * Dostep do kolejnych znakow napisu MOVE.B (A0)+,Port MW-ZPCiR-ICT-PWr 19

Tryb pośredni PC z indeksem i przesuni eciem (PC indirect with index and displacement) EA = (P C) + 2 + ((P C) + 3) SEX + (Xm) SEX Przyk lad (tablica konwersji umieszczona w kodzie programu); kod niezależny od po lożenia (PIC Position Independent Code): ORG ROM * Deklaracja danych stalych const char TabPi DC.B 1,2,3,5 TabPi[6] = {1,2,3,5}; * Inicjalizacja indeksu w tablicy MOVE.W #5,D1 NrLiczby = 5; * Odczyt liczby z tablicy MOVE.B TabPi(PC,D1.W),D0 Wynik=TabPi[NrLiczby]; MW-ZPCiR-ICT-PWr 20

Rozszerzenia trybów adresowania w M68K, niedost epne w CPU32 Pośrednie tryby adresowania z indeksowaniem: memory indirect postindexed EA = ((An) + bd SEX ) + (Xm) SEX SCALE + od SEX memory indirect preindexed EA = ((An) + bd SEX + (Xm) SEX SCALE) + od SEX program counter memory indirect postindexed EA = ((P C)+2+bd SEX )+(Xm) SEX SCALE +od SEX program counter memory indirect preindexed EA = ((P C)+2+bd SEX +(Xm) SEX SCALE)+od SEX MW-ZPCiR-ICT-PWr 21

Przyk ladowy listing asemblacji 00000000 =00F00000 1 ROM EQU $f00000 00000000 =00001000 2 RAM EQU $1000 00000000 3 00000000 4 * Tryb posredni rejestru adresowego 00000000 5 00000000 =000055AA 6 Dane EQU $55AA 00000000 =00FFF000 7 PortAdd EQU $FFF000 00000000 8 00000000 9 * Deklaracje zmiennych 00000000 10 * 00000000 11 00000000 12 * Inicjalizacja wskaznika 00F00000 13 ORG ROM 00F00000 207C 00FFF000 14 MOVEA.L #PortAdd,A0 00F00006 15 00F00006 16 * Przeslanie danych do portu 00F00006 30BC 55AA 17 MOVE.W #Dane,(A0) 00F0000A 18 00F0000A 19 00F0000A 20 * Tryb posredni rejestru adresowego 00F0000A 21 * (address register indirect with po 00F0000A 22 MW-ZPCiR-ICT-PWr 22

00F0000A 23 * Deklaracje zmiennych 00001000 24 ORG RAM 00001000 25 * 00001000 26 * 00001000 27 TablA DS.W 100 000010C8 28 TablB DS.W 100 00001190 29 00001190 30 * Inicjalizacja wskaznikow 00F00000 31 ORG ROM 00F00000 207C 00001000 32 MOVEA.L #TablA,A0 00F00006 227C 000010C8 33 MOVEA.L #TablB,A1 00F0000C 34 00F0000C 35 * Przepisanie elementow i przesuniec 00F0000C 32D8 36 MOVE.W (A0)+,(A1)+ 00F0000E 37 00F0000E 38 00F0000E 39 * Tryb posredni rejestru adresowego 00F0000E 40 * (address register indirect with pr 00F0000E 41 00F0000E 42 * Przesuniecie wskaznikow i przepisa 00F0000E 3320 43 MOVE.W -(A0),-(A1) 00F00010 44 00F00010 45 00F00010 46 * Tryb posredni rejestru adresowego 00F00010 47 * (address register indirect with di 00F00010 48 MW-ZPCiR-ICT-PWr 23

00F00010 49 * Definicja struktury data_t 00000000 50 ORG 0 00000000 51 * 00000000 52 Dzien DS.B 1 00000001 53 Miesiac DS.B 1 00000002 54 Rok DS.W 1 00000004 55 * 00000004 56 Data_L 00000004 57 * 00000004 58 00000004 59 * Deklaracje zmiennych 00001000 60 ORG RAM 00001000 61 * 00001000 62 Data DS.B Data_L 00001004 63 00001004 64 * Dostep do wnetrza struktury 00F00000 65 ORG ROM 00F00000 207C 00001000 66 MOVEA.L #Data,A0 00F00006 317C 07CC 0002 67 MOVE.W #1996,Rok(A0) 00F0000C 68 00F0000C 69 00F0000C 70 * Tryb posredni rejestru adresowego 00F0000C 71 * (address register indirect with in 00F0000C 72 00F0000C 73 * Definicja struktury pomiar_t 00000000 74 ORG 0 MW-ZPCiR-ICT-PWr 24

00000000 75 * 00000000 76 Datas DS.B Data_L 00000004 77 Temp DS.B 24 0000001C 78 * 0000001C 79 Pomiar_L 0000001C 80 * 0000001C 81 0000001C 82 * Deklaracje zmiennych 00001000 83 ORG RAM 00001000 84 * 00001000 85 * 00001000 86 * 00001000 87 Pomiar DS.B Pomiar_L 0000101C 88 0000101C 89 * Dostep do elementu tablicy wewnatr 00F00000 90 ORG ROM 00F00000 91 00F00000 92 * Inicjalizacja wskaznika struktury 00F00000 207C 00001000 93 MOVEA.L #Pomiar,A0 00F00006 94 00F00006 95 * Inicjalizacja indeksu w tablicy 00F00006 7200 96 MOVE.L #0,D1 00F00008 97 00F00008 98 * Odczyt pomiaru z tablicy 00F00008 1030 1804 99 MOVE.B Temp(A0,D1.L),D0 00F0000C 100 MW-ZPCiR-ICT-PWr 25