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

Podobne dokumenty
Struktura i działanie jednostki centralnej

Architektura komputerów wer. 7

Architektura komputerów wer. 3

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

Programowanie w C++ 1 Opis procesora Sextium II. Opis procesora Sextium. materiały dydaktyczne udostępnione przez Tomasza Wierzbickiego

Projekt prostego procesora

Procesor i jego architektura (CISC, RISC, 32/64 bity). Systemy wieloprocesorowe. wer Wojciech Myszka 16 pa«zdziernika 2008

Lista Rozkazów: Język komputera

Marie wprowadzenie do budowy prostego komputera

START: ; start programu od adresu 0100H ; zerowanie komórek od 01H do 07FH ( 1 dec dec)

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

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

Architektura komputerów

Mikrokontroler ATmega32. Język symboliczny

Programowanie mikrokontrolerów - laboratorium

Architektura komputerów

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Programowanie Niskopoziomowe

Języki programowania zasady ich tworzenia

Podstawy programowania skrót z wykładów:

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

Sprzęt i architektura komputerów

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

Języki formalne i techniki translacji

Wykład 4. Środowisko programistyczne

1. Pobrać plik masm.zip (Macro Assembler 6.15 & Segmented Executable Linker 5.60) (

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

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

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Architektura typu Single-Cycle

Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle

Architektura komputerów. Asembler procesorów rodziny x86

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

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Kurs Zaawansowany S7. Spis treści. Dzień 1

Laboratorium 1: Wprowadzenie do środowiska programowego. oraz podstawowe operacje na rejestrach i komórkach pamięci

Specyfika projektowania Mariusz Rawski

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYNTEZA UKŁADÓW CYFROWYCH ES2D100005

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

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

Sprzęt i architektura komputerów

Akademia Górniczo- Hutmicza w Krakowie Katedra Elektroniki WIET

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

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

Technika mikroprocesorowa I Wykład 2

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

PROGRAMOWANIE NISKOPOZIOMOWE

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

Algorytm. a programowanie -

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

Systemy wbudowane. Wprowadzenie. Struktura. Mikrokontrolery AVR. Wprowadzenie do programowania w C

Architektura komputerów

Organizacja typowego mikroprocesora

Jednostka centralna. dr hab. inż. Krzysztof Patan, prof. PWSZ

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Technologie informacyjne wykład 2 wer. 1.2

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

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

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

Lista rozkazów mikrokontrolera 8051

Algorytm mnożenia sekwencyjnego (wariant 1)

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

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Spis treści. Dzień 1. I Rozpoczęcie pracy ze sterownikiem (wersja 1707) II Bloki danych (wersja 1707) ZAAWANSOWANY TIA DLA S7-300/400

Jerzy Nawrocki, Wprowadzenie do informatyki

1 Ogolnie o asemblerach. 2 Zarys architektury MIPS

imei Instytut Metrologii, Elektroniki i Informatyki

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

Architektura komputerów

Struktury systemów operacyjnych Usługi, funkcje, programy. mgr inż. Krzysztof Szałajko

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

DSM51 operacje przesylania danych i operacje arytmetyczne strona 1

Architektura systemów komputerowych

Kurs SIMATIC S7-300/400 i TIA Portal - Zaawansowany. Spis treści. Dzień 1

Podstawy i języki programowania

Podstawy techniki mikroprocesorowej

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA

Podstawy Programowania. Wykład 1

Podstawy działania i programowania procesorów. 1. Architektura emulatora maszyny RAM

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Programowalne układy logiczne

Kierunek INFORMATYKA. Specjalność "Informatyka morska" Przedmiot Architektura Systemów Komputerowych

Podstawy Informatyki Języki programowania c.d.

Techniki mikroprocesorowe i systemy wbudowane

Visual Basic dla AutoCAD

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Technologie Informacyjne

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

Architektura komputerów

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Ćwiczenie 01 - Strona nr 1 ĆWICZENIE 01

Wstęp do Reverse engineeringu

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Algorytmy od problemu do wyniku

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Transkrypt:

MARIE A Machine Architecture that is Really Intuitive and Easy http://computerscience.jbpub.com/ecoa Słowo 16b Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym od 8000h (- 32,768 = -2^15) do 7FFFh (32,767= 2^15-1) kod dopełnieniowy:negujemy bity liczby bez znaku i dodajemy 1 Np. 23 ->17h->00010111 stąd 23->11101001->E9h Rozkaz: 4b kod operacji, 12b - adres wszystkie operandy rozkazów są adresami Pamięć: 4096 słów = 4K słów= 16*4096b=8kB

MARIE - dane i rozkazy 0 1 15 Dane Bit znaku 0 3 4 5 6 15 Kod operacji Adres Rozkaz Kod warunku

Rejestry 16-bitowe Akumulator (AC) przechowuje dane Rejestr rozkazów (IR) następny rozkaz do wykonania Rejestr buforowy pamięci (MBR) dane z/do pamięci 12-bitowe Licznik rozkazów (PC) adres następnej instrukcji Rejestr adresowy pamięci (MAR) adres danych w pamięci 8-bitowe (to błąd w książce) Rejestr wejściowy (InREG) dane z urządzenia we/wy Rejestr wyjściowy (OutREG) dane do urządzenia we/wy

Rejestry 16-bitowe Akumulator (AC) przechowuje dane Rejestr rozkazów (IR) następny rozkaz do wykonania Rejestr buforowy pamięci (MBR) dane z/do pamięci Rejestr wejściowy (InREG) dane z urządzenia we/wy Rejestr wyjściowy (OutREG) dane do urządzenia we/wy 12-bitowe Licznik rozkazów (PC) adres następnej instrukcji Rejestr adresowy pamięci (MAR) adres danych w pamięci

Lista rozkazów Kod hex Asembler 0000 0 JnS X 0001 1 Load X 0010 2 Store X 0011 3 Add X 0100 4 Subt X 0101 5 Input 0110 6 Output 0111 7 Halt 1000 8 Skipcond 1001 9 Jump X 1010 A Clear 1011 B AddI X 1100 C JumpI X

Opis rozkazów JnS X - ustaw PC na X i skocz do X+1 pozwala wywoływać procedury i podprogramy Load X załaduj M(X) do AC Store X - przechowaj zawartość AC pod adresem X Add X dodaj zawartość M(X) do AC i przechowaj wynik w AC Subt X odejmij M(X) od AC i przechowaj wynik w AC Input wprowadź wartość z klawiatury do AC Output wyprowadź zawartość AC na ekran Halt zakończ program

Opis rozkazów (c.d.) Skipcond pomiń następny rozkaz (PC<-PC+1) jeśli: (IR(4:5) = 00 & AC<0) (IR(4:5)=01 & AC=0) (IR(4:5)=10 & AC>0) IR(4:5) = 11 - błąd zastosowanie w pętlach while i wyrażeniach if Jump X załaduj M(X, 4:15) do PC i wykonaj skok Clear wyzeruj AC AddI X dodaj M(M(X)) do AC i przechowaj w AC JumpI X - załaduj M(M(X,4:15), 4:15) do PC i wykonaj skok

Asembler (kompilator) dokonuje konwersji z kodu źródłowego w języku asemblera (*.mas) na kod maszynowy (wykonywalny) (*.mex) Adres (hex) 100 101 102 103 104 105 106 Load 104 Add 105 Store 106 Halt 0023 FFE9 0000 Instrukcja Zawartość pamięci (hex) 1104 3105 2106 7000 0023 FFE9 0000 Program dodający dwie liczby (bez i z etykietami) Adres (hex) 100 101 102 103 X, 104 Y, 105 Z, 106 Instrukcja Load X Add Y Store Z Halt 0023 FFE9 0000

Asembler ma dwa przebiegi w pierwszym konstruuje tablicę symboli (*.map) X Y Z 104 105 106 w drugim wstawia dane z tablicy symboli Adres (hex) 100 101 102 Instrukcja Load X Add Y Store Z Zawartość pamięci (hex) 1104 3105 2106

Dyrektywy asemblera: ORG, OCT, DEC, HEX Adres (hex) 100 101 102 103 X, 104 Y, 105 Z, 106 Instrukcja Org 100 Load X Add Y Store Z Halt /koniec OCT 43 DEC -23 HEX 0000

Symulator MARIE v1.2 (v1.3.01) Instalacja wymagana java 1.4 (1.4.2) sdk jar xvf MarieSim.jar set CLASSPATH=C:\j2sdk1.4.0_01\marie kod źródłowy: MarieSource.jar Działanie symulatora edycja (edit) kodu źródłowego (*.mas) asemblacja do pliku *.mex; listing z asemblacji w pliku *.lst ładowanie (load) z pliku *.mex wykonanie (run): praca krokowa (step), punkty przerwań (breakpoints) tablica symboli (symbol map) w pliku *.map zrzut pamięci (core dump) do pliku *.dmp

Symulator MARIE (1)

Symulator MARIE (2)

Przykład 1 ORG 100 /Przykład 4.1 - sumowanie pięciu liczb Load Addr /Wczytaj adres pierwszej dodawanej liczby Store Next /Zachowaj ten adres jako nasz wskaźnik Next Load Num /Wczytaj liczbę elementów do zsumowania Subt One /Zmniejsz wartość o 1 Store Ctr /Zachowaj ten adres w Ctr. Będzie ona kontrolowała pętlę Clear /Wyczyść AC Loop, Load Sum /Wczytaj Sum do AC AddI Next /Dodaj wartość, na którą wskazuje lokalizacja Next Store Sum /Zachowaj tę sumę Load Next /Wczytaj Next Add One /Zwiększ ją o 1, tak aby wskazywała na następny adres Store Next /Zachowaj ją w naszym wskaźniku Next Load Ctr /Wczytaj zmienną sterującą pętli Subt One /Odejmij jeden od zmiennej sterującej pętli Store Ctr /Zapisz tę nową wartość w zmiennej sterującej pętli Skipcond 000 /Jeśli zmienna sterująca < 0, pomiń następną instrukcję Jump Loop /W przeciwnym przypadku przejdź do Loop Halt /Zakończ program Addr, Hex 118 /Liczby, które mają być zsumowane zaczynają się od adresu 118 Next, Hex 0 /Wskaźnik do następnej liczby do zsumowania Num, Dec 5 /Liczba wartości, które trzeba dodać Sum, Dec 0 /Suma Ctr, Hex 0 /Zmienna sterująca pętli One, Dec 1 /Wykorzystywana do zwiększania i zmniejszania wartości o 1 Dec 10 /Wartości, które mają być zsumowane Dec 15 Dec 20 Dec 25

Przykład 2 ORG 100 /Przykład 4.2 - Konstrukcja if/else If, Load X /Wczytaj pierwszą wartość Subt Y /Odejmij wartość Y i zachowaj wynik w AC Skipcond 400 /Jeśli AC=0, pomiń następną instrukcję Jump Else /Jeśli AC nie jest równe 0, skocz do części Else Then, Load X /Ponownie wczytaj X, aby można było podwoić jego wartość Add X /Podwój wartość X Store X /Zapisz nową wartość Jump Endif /Przeskocz nad częścią Else do końca If Else, Load Y /Rozpocznij część Else, wczytując Y Subt X /Odejmij X od Y Store Y /Zapisz w Y wartość Y-X Endif, Halt /Zakończ program X, Dec 12 /Wartość X Y, Dec 20 /Wartość Y

Przykład 3 Loop, ORG Load Store JnS Store Load Store 100 /Przykład 4.3 - procedura X /Wczytaj pierwszą liczbę, którą należy podwoić Temp /Użyj Temp w charakterze parametru, za pośrednictwem /którego zostanie przekazana wartość do Subr Subr /Zachowaj adres powrotny, skocz do procedury X /Zapisz pierwszą podwojoną liczbę Y /Wczytaj drugą liczbę, którą należy podwoić Temp /Użyj Temp w charakterze parametru, za pośrednictwem /którego zostanie przekazana wartość do Subr Subr /Zachowaj adres powrotny, skocz do procedury JnS Store Y /Zapisz drugą podwojoną liczbę Halt /Zakończ program X, DEC 20 /Wartość X Y, DEC 48 /Wartość Y Temp, DEC 0 /Obszar roboczy Subr, HEX 0 /Przechowaj adres powrotny w tym miejscu Clear Load Add JumpI END /Wyczyść AC, ponieważ był on zmodyfikowany przez JnS Temp /Podprocedura podwajająca liczby Temp /AC przechowuje teraz podwojoną wartość Temp Subr /Wróć do wywołującego kodu