Architektury Komputerów - Laboratorium Informatyka III rok studia dzienne

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

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

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Architektura komputerów. Asembler procesorów rodziny x86

GRAFIKA I ROZPOZNAWANIE OBRAZÓW

PROGRAMY REZYDENTNE Terminate and State Resident, TSR

Adam Kotynia, Łukasz Kowalczyk

Ćwiczenie nr 6. Programowanie mieszane

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

O grafice i monitorach. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

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

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

Wykład VII PASCAL - grafika;

Programowanie niskopoziomowe

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

Programowanie Niskopoziomowe

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania.

Pokaz slajdów na stronie internetowej

Sprzęt i architektura komputerów

Odczyt zegara ze sterownika do panelu serii TIU z możliwością korekty ustawień zegara w sterowniku

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

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

Struktura systemu mikroprocesorowego Z80 z interfejsem monitora graficznego.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Programowanie Niskopoziomowe

Ćwiczenie 3. Konwersja liczb binarnych

Lista instrukcji mikroprocesora Programowanie w assemblerze

CZYM JEST KARTA GRAFICZNA.

Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051

STEROWNIK TUBY LED STM-64

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.

Architektura komputerów

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

Programowanie mikrokontrolerów. 8 listopada 2007

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada

Instytut Teleinformatyki

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

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

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

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

Przykładowe zagadnienia na sprawdzian z wiedzy ogólnej. Linux to nazwa: A. Programu biurowego. B. Systemu operacyjnego. C. Przeglądarki internetowej.

Sprzęt i architektura komputerów

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

Mikroprocesor Operacje wejścia / wyjścia

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Instytut Teleinformatyki

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Programowanie w języku Python. Grażyna Koba

Ogólne informacje. cią pracy, wielkości wyświetlan. cią obrazu, wietlaną rozdzielczości. częstotliwo. wieŝania obrazu.

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

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

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

Pierwsze kroki z easy Soft CoDeSys Eaton Corporation. All rights reserved.

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

Wstęp Architektura... 13

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

Programowanie Niskopoziomowe

Laboratorium Komputerowe Systemy Pomiarowe

Technika mikroprocesorowa. Konsola do gier

STRUKTURA I ORGANIZACJA STOSU (FILO- First In Last Out) Rejestry stosu: SS i SP (Stack Segment i Stack Pointer)

Organizacja typowego mikroprocesora

Wyświetlacze graficzne : 162x64 z kontrolerem S1D x60 z kontrolerem S1D15710

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

Techniki mikroprocesorowe i systemy wbudowane

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

INSTRUKCJA PROGRAMU DO REJESTRATORÓW SERII RTS-05 ORAZ RTC-06. wyposażonych w komunikację. Bluetooth lub USB PRZEDSIĘBIORSTWO PRODUKCYJNO HANDLOWE

Jerzy Nawrocki, Wprowadzenie do informatyki

Grafika rastrowa (bitmapa)-

Konsola operatora TKombajn

2. Architektura mikrokontrolerów PIC16F8x... 13

imei Instytut Metrologii, Elektroniki i Informatyki

Warsztaty dla nauczycieli

Kod źródłowy programu: program Grafika1; uses crt, graph; (1) var sterownik, tryb:smallint; (2)

Ćwiczenie nr 1. Wprowadzenie do programowania w języku asemblera

Tematy lekcji informatyki klasa 4a styczeń 2013

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

M++ Compiler 1.5 ALFA. Autor: Michał Michzimny Zimniewicz

Podstawy Informatyki Wykład V

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Simba 3D LOGO. Cele zajęć: - Poznanie zasad i sposobów tworzenia procedur z parametrami. - Poznanie zasad wywoływania procedur z parametrami.

Kompilator języka C na procesor 8051 RC51 implementacja

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

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

Instrukcja do oprogramowania ENAP DEC-1

Instytut Teleinformatyki

Programowanie w językach asemblera i C

Laboratorium Elektrycznych Systemów Inteligentnych

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

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]

Rozdział II. Praca z systemem operacyjnym

1. Opis. 2. Wymagania sprzętowe:

Programowanie w asemblerze Środowiska 64-bitowe

Procesory rodziny x86. Dariusz Chaberski

Wykład 4. Środowisko programistyczne

Transkrypt:

Architektury Komputerów - Laboratorium Informatyka III rok studia dzienne Ćwiczenie nr 2 Karta grafiki VGA. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z podstawowymi trybami pracy kart graficznych VGA, sposobami organizacji pamięci oraz metodami dostępu do niej. Wymagane wiadomości Budowa i programowanie typowej karty VGA. Podstawowe tryby graficzne (13h, 12h), organizacja oraz dostęp do pamięci karty w tych trybach. Podstawy programowania w języku Asembler (struktura programu, segmenty, deklaracje zmiennych, procedury, mnemoniki rozkazów, przerwania programowe) Wykorzystywany sprzęt Komputer PC z kartą graficzną kompatybilną z VGA oraz kompilatorem Asemblera. Literatura Piotr Metzger - Anatomia PC. Tomasz Kopacz - "Karty graficzne VGA i SVGA. Programowanie grafiki" http://www.iaii.weia.po.opole.pl/dyplomy/arch_komp/cwicz6.html http://www.asembler.host.sk/index.php http://www.komputery-internet.net/asembler/ 1

Wprowadzenie Współczesne systemy komputerowe w zdecydowanej większości wyposażone są w karty graficzne wywodzące się od typowej karty VGA (video graphic adapter). Standard VGA oraz SVGA pozwalał na pracę w trybach wielokolorowych o różnych coraz większych rozdzielczościach. Karta graficzna VGA jest kartą umożliwiającą wykorzystanie maksymalnie 256 kolorów w rozdzielczości 320x200 punktów, lub 16 kolorów przy 640x480 punktów. Ograniczenie wynika z ilości pamięci wynoszącej w standardzie 256 kb. Do jej popularności przyczyniła się zgodność z wcześniejszymi kartami: MDA i EGA. Zgodność z kartą CGA jest częściowa, ponieważ niektóre porty zmieniły adresy. Jeśli sterownik posiada odpowiednio dużo pamięci, przez właściwe ustawienie rejestrów można uzyskać wyższe rozdzielczości oraz wybierać z większej dostępnej liczby kolorów. Niezależnie od trybu graficznego wyświetlane kolory mogą być wybierane z palety 262 144 kolorów. W miarę rozwoju technologii parametry standardu VGA stały się niewystarczające. Wielu producentów wyposażało karty w dodatkowe opcje. Rozbudowa obejmuje przede wszystkim zwiększenie pamięci karty graficznej oraz dodanie nowych trybów. Oprócz rozdzielczości zwiększeniu uległa liczba jednocześnie wyświetlanych kolorów, która obecnie pozwala wyświetlać punkty w 2 24 odcieni. Niestety, różni producenci stosują własne rozwiązania, co spowodowało powstanie standardu VESA. Ujednolicił on parametry monitorów współpracujących z kartami SVGA, numerację rozszerzonych trybów graficznych, interfejs programowy (dodatkowe funkcje BIOS-u). Współczesne karty graficzne swoimi możliwościami już wykraczają poza tryby określone przez VESA. Jednym z elementów różniących sterownik VGA od poprzedników jest sposób generowania sygnału wyjściowego. Sterownik VGA wykorzystując wbudowany przetwornik CA generuje sygnał analogowy, dzięki czemu do standardowej karty VGA można podłączyć zarówno monitor kolorowy jak i monochromatyczny, który będzie wyświetlał obraz w odcieniach szarości. Nowoczesne karty SVGA posiadają nawet do kilkuset programowalnych rejestrów sterujących, dzięki którym realizujemy wydajną współpracę systemu ze sterownikiem graficznym. Niestety, częstokroć wykorzystanie pełnych możliwości karty wymaga współpracy z dedykowanymi dla danej karty sterownikami. Z punktu widzenia procesora, karta graficzna to zbiór punktów wejścia-wyjścia i obszar pamięci obrazu programowanie sterownika sprowadza się zatem do zapisu oraz odczytu do i z pamięci oraz portów we-wy. Pamięć obrazu jest odwzorowana bezpośrednio w przestrzeni adresowej procesora, pomiędzy adresami A000:0000h a B000:FFFFh, pozwalając na wykorzystanie do zapisu lub odczytu instrukcji mov lub movs. Standardowy sterownik VGA posiada 256 kb pamięci RAM, zaś karty SVGA co najmniej 512 kb. Z tego 2

powodu pamięć obrazu zorganizowana jest na różne sposoby, w zależności od trybu pracy sterownika. W trybach odziedziczonych po CGA wykorzystywana jest spakowana (packed) metoda odwzorowania pamięci w jednym bloku pamięci RAM każdemu punktowi na ekranie odpowiada fragment bajtu zawierający numer koloru tego punktu. Pole odpowiadające jednemu punktowi wynosi zwykle 1, 2, 4 lub 8 bajtów co odpowiada 2, 4, 16 lub 256 kolorom obrazu. Dla kart EGA i VGA podstawową metodą odwzorowania ekranu jest metoda płatowa (plannar, bit mapped). Pamięć obrazu podzielona jest na 4 płaty (bloki) po 64 kb każdy. W każdym bloku jednemu bitowi odpowiada jeden punkt dzięki takiej strukturze 256 kb pamięci obrazu zajmuje 64 kb przestrzeni adresowej. Konsekwencją przyjętej organizacji pamięci jest utrudniony dostęp do danych. Zapis lub odczyt wymaga dodatkowo programowania rejestrów układu sterownika. 3

Karty graficzne pracują w dwóch trybach znakowym i graficznym. Poniższa tabela przedstawia numerację i podstawową charakterystyką standardowych trybów kart VGA. AL. Rodzaj Rozdz. Kolory Karta Segment pamięci 00H tekstowy 40x25 16/8 szarości CGA/EGA B8000H 01H tekstowy 40x25 16/8 CGA/EGA B8000H 02H tekstowy 80x25 16/ szarości CGA/EGA B8000H 03H tekstowy 80x25 16/8 CGA/EGA B8000H 04H graficzny 320x200 4 CGA/EGA B800H 05H graficzny 320x200 4 szarości CGA/EGA B800H 06H graficzny 640x200 2 CGA/EGA B800H 07H tekstowy 80x25 3 MDA/EGA B0000H 0DH graficzny 320x200 16 EGA A000H 0EH graficzny 640x200 16 EGA A000H 0FH graficzny 540x350 2 EGA mono A000H 10H graficzny 640x350 16 EGA A000H 11H graficzny 640x480 2 MCGA A000H 12H graficzny 640x480 16 VGA A000H 13H graficzny 320x200 256 VGA A000H Na zajęciach zajmiemy się trybami graficznymi 13h oraz 12h. Różnią się one rozdzielczością, ilością możliwych do wyświetlenia kolorów. Różna jest tez organizacja pamięci, a co z tego wynika posługiwanie się trybami. Tryby graficzne: Włączenie/Wyłączenie trybu graficznego Do obsługi trybu graficznego służy przerwanie 10H. Funkcja 0H (Ah=0) ma za zadanie zmiany trybu graficznego/tekstowego. Wymaga umieszczenia w rejestrze AL Numeru trybu, który chcemy uruchomić. Powrót do trybu tekstowego następuje dla wartości AL = 03h. 4

Tryb 320x200x256 (13h) W tym trybie do czynienia mamy z najprostszą organizacją pamięci karty graficznej. Na każdy piksel ekranu przeznaczony jest jeden bajt (możliwość wyświetlenia 256 kolorów). Na zapamiętanie całego obrazu potrzebne jest 320*200=64000 bajtów. Wartości te umieszczone są w ciągłej przestrzeni rozpoczynającej się od adresu A000h. Oznacza to, że aby wyświetlić punkt należy przesłać pod adres A000:OFFSET (gdzie wartość OFFSET wyznaczana jest jako 320*Y + X a X i Y są współrzędnymi punktu z zerem w lewym górnym rogu) bajt reprezentujący kolor na ekranie. Punkt o współrzędnych [0,0] ma więc adres A000H:0 Poniższy kod pokazuje strukturę programu w asemblerze - przełącza kartę w tryb 13h, czeka na naciśnięcie klawisza, rysuje punkt w środku ekranu po czym wraca do trybu tekstowego: DATA1 segment X DW 0 ; zmienna przechowująca wsp. X Y DW 0 ; zmienna przechowująca wsp. Y kolor DB 0 ; rezerwujemy 1 bajt na DATA1 ends CODE1 segment ASSUME cs:code1, ds:data1, ss:stos1 START: ;inicjalizacja stosu mov ax,seg STOS1 mov ss,ax mov sp,offset top ; przelaczenie karty w graficzny tryb 13h mov ah,00h ; do AH numer funkcji przerwania 10h mov al,13h ; do AL numer włączanego trybu int 10h ; włączamy tryb graficzny 13h ; - oczekiwanie na naciśnięcie dowolnego klawisza mov ax,0 ; funkcja 00 przerwania 16h czeka na klawisz int 16h ; przerwanie obsługujące klawiaturę ; ustalamy wsp. punktu i jego kolor mov X,160 mov Y,100 mov kolor,15 ;obliczamy odpowiedni adres w pamieci obrazu mov AX,0A000h mov ES,AX ; do ES segment pamieci ekranu mov AX, Y mov DX,320 mul DX mov dx,x add ax,dx mov di,ax mov AL,kolor ; do AL=kolor mov ES:[DI],AL ; zapalamy punkt w pamieci obrazu; ; znow oczekiwanie na naciśnięcie dowolnego klawisza mov ax,0 int 16h ; powrot do trybu tekstowego mov ah,00h ; do AH numer funkcji przerwania 10h mov al,03h ; do AL numer włączanego trybu 5

int 10h ; 03 oznacza tryb tekstowy ; zakończenie programu mov ax,4c00h ; wywolaniem funkcji 4ch przerwania INT 21h int 21h ;kończymy program CODE1 ends STOS1 segment STACK dw 256 dup(?) top dw? STOS1 ends END START Aby w programie korzystać z pętli należy zastosować następującą konstrukcję: MOV CX, ile_razy_ma_się_wykonać etykieta1: (treść w pętli) LOOP etykieta1 Rejestr CX pełni rolę licznika pętli - w każdym przebiegu jego wartość jest zmniejszana o 1 aż do wartości 0. Chcąc konstruować pętle zagnieżdżone trzeba przed ponowną inicjacją wartości rejestru CX (licznik pętli wewnętrznej) zachować na stosie jego poprzednią wartość instrukcją: PUSH CX oraz po zakończeniu pętli wewnętrznej odzyskać tę wartość instrukcją: POP CX Aby program wywoływał procedurę należy we właściwym miejscu pliku tekstowego umieścić treść tej procedury a następnie wywołać tę procedurę instrukcją: CALL nazwaprocedury Należy zwrócić uwagę na prawidłową inicjację zmiennych i rejestrów wykorzystywanych w procedurze. 6

Wykonanie ćwiczenia. W trakcie realizacji ćwiczenia wykorzystujemy kompilator MASM firmy Microsoft. Aby powstał program wykonywalny należy przy pomocy dowolnego edytora (edit, notepad) stworzyć tekstowy plik z treścią programu, zapisać go na dysku jako plik z rozszerzeniem.asm a następnie skompilować poleceniem: ml [nazwapliku.asm] Jeśli kompilacja przebiegnie bezbłędnie, automatycznie jest uruchamiany linker tworząc postać wykonywalną programu (plik z rozszerzeniem *.exe). Zadanie 1. Tryb graficzny 13h. 1.1 Przeanalizować i zrozumieć działanie programu z wstępu. Następnie uruchomić go. Zmieniając odpowiednio adres pod który wysyłany jest bajt odpowiadający za kolor zaobserwować zmianę położenia punktu na ekranie. 1.2 Przystosować program w taki sposób aby zapalanie punktu odbywało się za pomocą poniższej procedury wywoływanej rozkazem CALL w sposób przedstawiony poniżej:... MOV X,160 ; wsp X = 160 MOV Y,100 ; wsp Y = 100 MOV KOLOR, 0FH ; kolor = 15 CALL Set_pixel320 ; i zapalamy punkt wywolujac procedure... Do określenia współrzędnych punktu procedura powinna korzystać z zadeklarowanych w segmencie danych dyrektywą DW zmiennych X i Y o rozmiarze słowa. Kolor jest ustalany za pomocą zmiennej kolor. 1.3 Mając możliwość łatwej zmiany współrzędnych i wykorzystując pętle LOOP narysować w czwartej linii kreskę na ekranie o długości 100 pikseli w dowolnie wybranym kolorze. 1.4 Zmodyfikować program tak, by rysował w linii 100 kreskę o długości 256 punktów, z których każdy będzie miał inny kolor. 1.5 Zmieniając adres pod który wysyłany jest bajt odpowiadający za kolor narysować linię pionową. 1.6. Rozbudować program tak, by korzystając z pętli LOOP rysował na ekranie 256 linii pionowych każda w innym kolorze. 1.7 Narysować na ekranie linie ukośną nachylona po kątem 45 stopni. 7

Tryb 640x480x16 (12h) W tym trybie do czynienia mamy z nieco inną - płatową organizacją pamięci karty graficznej. Mamy tutaj do czynienia z dużo większą rozdzielczością, lecz w zamian za to mniejszą ilością kolorów. W inny sposób osiągamy również zaświecenie punktu na ekranie. Jeden bajt pamięci odpowiada za 8 pikseli na ekranie, zaś kolor piksela składany jest z fragmentów bajtów w czterech różnych miejscach pamięci. Pozornie bardziej skomplikowana organizacja pamięci w efekcie pozwala na szybszy dostęp dzięki sprzętowej realizacji tego trybu. Przykładowa procedura rysująca punkt: SetPixel640: mov AX,Y mov BX,Y ; X ma byc w AX ; Y ma byc w BX push AX push BX push CX push DX push AX mov AX,0A000h ; w ES umieszczamy seg. pam. obrazu mov ES,AX pop AX mov CL,4 shl BX,CL mov CX,BX shl BX,1 shl BX,1 add BX,CX ; mnozenie y*80 mov CX,AX shr CX,1 shr CX,1 shr CX,1 add BX,CX ;dodanie x/8 and AX,7 mov CL,AL mov AH,080h shr AH,CL mov AL, 8 mov DX,3CEh out DX,AX mov AL,BYTE PTR ES:[BX] mov DL,kolor and DL,0Fh ; w trybie 12 mamy tylko 16 kolorow mov BYTE PTR ES:[BX],DL pop DX pop CX pop BX pop AX ret Zadanie 2. Tryb graficzny 12h. 2.1 Poprzez wymianę procedury Set_pixel320 na Set_pixel640 i inne odpowiednie zmiany (należy w odpowiednim miejscu włączyć tryb 12h ) uruchomić program zapalający punkt na środku ekranu. 2.2 Przygotować program który korzystając z procedury Set_pixel640 i odpowiednich pętli narysuje na ekranie prostokąt o wierzchołkach (100,100),(500,100), (500,300), (100,300) 8