Architektura systemów komputerowych Laboratorium 7 Symulator SMS32 Stos, Tablice, Procedury

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

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

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

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

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

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

Ćwiczenie 3. Konwersja liczb binarnych

Architektura komputerów. Asembler procesorów rodziny x86

2.1. W architekturze MIPS, na liście instrukcji widzimy dwie instrukcje dotyczące funkcji: .text main: la $a0, string1 # drukuj pierwszy łańcuch

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

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

Architektura systemów komputerowych Laboratorium 10 Symulator SMS32 Urządzenia wejścia i wyjścia

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

Architektura komputerów

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

Sprzęt i architektura komputerów

Akademia Górniczo- Hutmicza w Krakowie Katedra Elektroniki WIET

Programowanie Niskopoziomowe

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno

Programowanie niskopoziomowe

Sprzęt i architektura komputerów

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

Mikroprocesor Operacje wejścia / wyjścia

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

Wstęp do informatyki. Operandy instrukcji. Tryby adresowania. Programowanie komputera asembler c.d. Cezary Bolek

Programowanie Niskopoziomowe

Programowanie obiektowe

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Praktycznie całe zamieszanie dotyczące konwencji wywoływania funkcji kręci się w okół wskaźnika stosu.

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja

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

JAK DZIAŁAJĄ FUNKCJE PODZIAŁ PAMIĘCI

Zuzanna Hartleb i Artur Angiel

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

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

Wstęp do informatyki. Operandy instrukcji. Tryby adresowania. Adresowanie natychmiastowe (Immediate) Operand jest podaną liczbą

Architektura komputerów

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

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

PROGRAMY REZYDENTNE Terminate and State Resident, TSR

Architektura komputerów

Magistrala systemowa (System Bus)

Techniki mikroprocesorowe i systemy wbudowane

Programowanie mikrokontrolerów. 8 listopada 2007

Ćwiczenie nr 4. Zasady kodowania podprogramów

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

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

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

pobieramy pierwszą literę komunikatu i wypełniamy nią (wszystkie pozycje tą samą literą) bufor słownikowy.

Przykładowe pytania DSP 1

Metody Realizacji Języków Programowania

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

Architektura komputerów

Adam Kotynia, Łukasz Kowalczyk

Metody numeryczne Laboratorium 2

1. Operacje logiczne A B A OR B

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

Przerwania w architekturze mikrokontrolera X51

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Ćwiczenie nr 6. Programowanie mieszane

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Organizacja typowego mikroprocesora

Opis procedur asemblera AVR

imei Instytut Metrologii, Elektroniki i Informatyki

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

Lista instrukcji mikroprocesora Programowanie w assemblerze

1 Podstawy c++ w pigułce.

Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych


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

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

Wykład 4. Środowisko programistyczne

Techniki multimedialne

I znowu można jak w C, za pomocą starych struktur i metod:

Programowanie w językach asemblera i C

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Odbiornik z wyświetlaczem

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

Dynamiczne struktury danych

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

Sterowanie pracą programu

dr inż. Jarosław Forenc

1 Podstawy c++ w pigułce.

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Podstawy Informatyki Języki programowania c.d.

Jerzy Nawrocki, Wprowadzenie do informatyki

Wydział Mechaniczny. Instrukcja do zajęć laboratoryjnych. Numer ćwiczenia: 4. Laboratorium z przedmiotu: Technika cyfrowa i mikroprocesorowa

Programowanie komputera

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

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

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

Transkrypt:

Marcin Stępniak Architektura systemów komputerowych Laboratorium 7 Symulator SMS32 Stos, Tablice, Procedury 1. Informacje 1.1. Stos Stos jest strukturą danych, w której dane dokładane są na wierzch stosu (zwany też wierzchołkiem stosu) i z niego są też pobierane. Jest to bufor typu LIFO, Last In, First Out; ostatni na wejściu, pierwszy na wyjściu). Stos stosowany w informatyce można porównać do stosu książek wkładanego do ciasnego pudełka. Książki można odkładać tylko na wierzch stosu i da się je brać jedynie z wierzchu stosu. Chcąc wyjąć książkę znajdującą się niżej, konieczne jest wcześniejsze podniesienie książek leżących na niej. W mikroprocesorach, adres kolejnego wolnego elementu na stosie jest zapisany w rejestrze SP (ang. stack pointer). Większość implementacji stosu, po dodaniu elementu zmniejsza adres znajdujący się w rejestrze SP. W symulatorze SMS32 jest to rozwiązane właśnie w ten sposób, a początkowy adres w SP to BF. Rysunek 1 przedstawia widok pamięci symulatora SMS32. W tym przypadku mamy stos, na którym odłożono 3 elementy (bajty). Komórka o adresie z rejestru SP jest oznaczona niebieskim tłem. Tabela 1 zawiera objaśnienie czterech instrukcji manipulacji stosem, które udostępnia symulator SMS32. 1

Rysunek 1. Stos w symulatorze SMS32 Tabela 1. Instrukcje operujące na stosie Instr. Operand A Działanie POP F POPF rejestr ogólnego przeznaczenia rejestr ogólnego przeznaczenia odkłada (kopiuje) wartość rejestru na sos zdejmuje wartość ze stosu i zapisuje do rejestru odkłada wartość rejestru flag na stos pobiera wartość rejestru flag ze stosu 1.2. Tablice Tablice są to kontenery danych, zwykle o ustalonym rozmiarze, których poszczególne elementy dostępne są za pomocą klucza (zwykle są to elementy numeryczne zwane indeksami). W językach assemblera są dostępne instrukcje pozwalające wypełniać określone komórki pamięci wskazanymi danymi. Traktowanie określonych danych jako tablica jest tylko umowne. Do programisty należy zaprogramowanie obsługi tabel, czyli w podstawowej wersji wskazanie liczby elementów tabeli lub jej końca, a także pilnowanie, aby program nie wykroczył poza zakres tablicy podczas jej przetwarzania. Tabela 2 zawiera instrukcje potrzebne do umieszczenia danych w odpowiednich miejscach pamięci RAM. Do utworzenia tablicy należy wykorzystać wiele instrukcji DB. Listing 1 zawiera przykład tworzenia i wykorzystania tablicy. W tym przykładzie mamy w tablicy 4 elementy. Pierwszy element 2

Tabela 2. Instrukcje (dyrektywy asemblera) związane z organizacją danych Instr. Operand A Działanie ORG adres dyrektywa assemblera powodująca, że kod będzie generowany od adresu A DB wartość bajtu zapisuje wartość podaną jako operand A w pamięci RAM DB "tekst" zapisuje kody ASCII podanego ciągu znaków w kolejnych komórkach pamięci tablicy ma adres 02. Pętla przechodzi po wszystkich elementach tablicy i kopiuje ich wartość do rejestru AL. Warunkiem stopu jest znana wartość ostatniej komórki, po której napotkaniu program rozpoczyna się od początku. Listing 1. Definiowanie i wykorzystanie tablic ; tablice JMP Start DB 84 ; pierwsza wartosc DB C8 ; druga wartosc DB 31 ; trzecia wartosc DB 58 ; czwarta wartosc i koniec danych Start: MOV BL,02 ; 02 to poczatek danych Rep: MOV AL,[BL] CMP AL,58 ; czy ostatni element? JZ Start ; jesli tak, to skocz do start, zaczynamy od poczatku INC BL ; jesli nie, to wez kolejny element JMP Rep ; skok na poczatek END 1.3. Procedury Procedury pozwalają na szybsze i prostsze pisanie programów, a przede wszystkim zmniejszają zużycie pamięci przeznaczonej na kod programu. Opis instrukcji wykorzystywanych przy wywoływaniu procedur, zawarty został w tabeli 3. Dodatkowo, przy tworzeniu procedur używa się zwykle instrukcji ORG, aby adres procedury był znany. Listing 2 zawiera przykładową procedurę. Przykład prezentuje także sposób zapisu i przywracania zawartości rejestrów. 3

Tabela 3. Podstawowe instrukcje symulowanego mikroprocesora Instr. Operand Działanie CALL adres procedury zapisuje wartość rejestru IP na stosie i skacze do adresu wskazanego przez operand przywraca rejestr IP ze stosu i skacze pod adres tam zawarty Listing 2. Prosta procedura licząca x 3 clo call 30 JMP end_label ORG 30 ; poczatek kodu AL ; zapisanie al na stosie F ; zapisanie flag na stosie mov bl,1 mul bl,al mul bl,al mul bl,al POPF ; przywroc flagi. POP AL ;przywroc AL. end_label: END Dane (parametry) do procedur możemy przekazywać na różne sposoby. Mamy trzy możliwości: 1. dane w rejestrach, 2. dane w pamięci ram, 3. dane na stosie. Listing 3 ilustruje wykorzystanie każdej z powyższych metod. Należy pamiętać, że instrukcje procesora związane z procedurami odpowiadają tylko za zmianę zawartości rejestru IP. Programista powinien zapewnić, że procedura nie nadpisze rejestrów ustawionych przed jej wywołaniem (chyba że jest to pożądane). W tym celu należy używane rejestry bazowe i rejestr flag odłożyć na stos, a po wykonaniu procedury przywrócić ich wartości. Listing 3. Sposoby przekazywania parametrów do procedur ; Procedury z parametrami ; W 3 przykladach chodzi o pokazanie roznych metod zapamietywania ; i odwolywania sie do danych 4

Jmp start ; pomijamy dane DB 0 ; Zarezerwuj bajt pamieci Ram pod adresem [02] DB 0 ; Zarezerwuj bajt pamieci Ram pod adresem [03] ; rejestry do zapamietania parametrow, parametow tyle ile rejestrow start: MOV AL,5 MOV BL,4 CALL 30 ; Wywolanie procedury (al=al*bl) ; tak jak bylo do tej pory ; RAM do zapamietania parametrow MOV AL,3 MOV [02],AL ; al zapisujemy w [02] MOV BL,1 MOV [03],BL ; bl zapisujemy [03] CALL 40 ;wywolanie procedury ; stos do zapamietania parametrow ; zapisuje na stosie, POP zdejmuje ze stosu MOV AL,7 AL MOV BL,2 BL CALL 60 POP BL POP AL ; dane w al i bl ORG MUL 30 ; poczatek procedury1 AL,BL ; powrot ORG 40 ; Poczatek procedury2 F CL ; zapmaietanie rejestrow DL ; zapamietanie flag MOV CL,[02] ; pobranie parametrow z RAM MOV DL,[03] MUL CL,DL MOV [02],CL ; zapisanie wyniku 5

POPF ; przywrocenie oryginalnych zawartosci POP POP DL CL ORG 60 ; procedura 3 POP DL POP BL POP AL mul AL,BL AL BL DL END 1.4. Dodatkowe informacje http://www.softwareforeducation.com/sms32v50/sms32v50_manual/index.htm https://pl.wikipedia.org/wiki/stos_(informatyka) https://pl.wikipedia.org/wiki/tablica_(informatyka) 2. Zadania Każde zadanie polega na napisaniu programu zawierającego opisaną procedurę i podany sposób testowania. 2.1. Zadanie 1 Napisać procedurę, która dla dowolnej cyfry dziesiętnej (0..9) przekazanej w rejestrze AL zwróci w tym samym rejestrze AL kod ASCII dla podanej cyfry. Procedurę należy przetestować dla liczb 3, 7. Kody wyświetlić na wyświetlaczu VDU. 6

2.2. Zadanie 2 Napisać procedurę, która wyświetli tablicę cyfr znajdującą się w pamięci RAM. Adres pierwszego elementu tablicy powinien być przekazywany w rejestrze DL. Należy wykorzystać funkcję zamiany z poprzedniego zadania. Testowa tablica powinna zawierać przynajmniej 3 elementy. Procedura musi uwzględniać tablice różnej długości (jako ostatni element tablicy należy wstawić znaną wartość, np -1 ). 2.3. Zadanie 3 Napisać procedurę, która wyświetli ciąg znaków, zapisanych jako tablica w pamięci RAM, na wyświetlaczu VDU. Adres pierwszego elementu tablicy powinien być przekazywany w rejestrze AL. Należy przetestować procedurę na ciągu Hello. Procedura musi uwzględniać ciągi znaków różnej długości (jako ostatni element tablicy należy wstawić znaną wartość, zwykle jest to 0 ). 2.4. Zadanie 4 Napisać procedurę, która spełnia założenia zadania 3, ale wyświetla tekst od końca. Zadanie można w prosty sposób rozwiązać wykorzystując stos. 7