Architektura komputerów, Studia, PWR, 4 semestr, Architektura komputerów 2, laboratoria


Architektura komputerów

Laboratorium nr 1

Sprawozdanie

Wprowadzenie:

Celem laboratorium było zapoznanie się z językiem Asembler, jego składnią i poleceniami.

Zadanie 1:

Napisać program, który zapyta użytkownika o imię. Na podstawie otrzymanych materiałów laboratoryjnych skonstruować taki program w oparciu o „Hello World”. Przeanalizować działanie.

Wykonanie:

By skompilować program należało najpierw napisać plik Makefile, który zawierał informacje potrzebne dla kompilatora, by utworzył plik obiektowy i wykonywalny. Korzystając z szablonu zawartego w instrukcji, plik Makefile dla danego programu wyglądał następująco:

0x08 graphic

Terminal kompilował podany plik ze ścieżki dostępu. Sam program wyglądał następująco:

0x08 graphic

Napisany program działał bez zarzutów. By spełniał warunki zadania należało zmienić wyświetlany tekst na „Podaj imie”. Zmienną odpowiadającą za wiadomość jest „msg_imie” (w pierwotnym programie „msg_helloworld”). Długość msg_imie_len wczytywana automatycznie z długości podanego ciągu znaków. Funkcją wyświetlającą wiadomość na ekranie jest SYSWRITE. W podanym kodzie nie używa się SYSREAD, do wczytywania ciągu znaków z klawiatury, jednak nie wykasowano go z listy inicjalizacyjnej. Użyto znacznika `.text'.

Struktura programu jest podobna do struktury języków wyższego rzędu. Pojawia się deklaracja zmiennych, główne ciało programu po komendzie „_start:” oraz deklaracja zakończenia komendą SYSEXIT.

Zadanie 2:

Napisać program, który zapyta użytkownika o imię, użytkownik ma je wprowadzić z klawiatury, po czym program wyświetli je ponownie na ekranie.

Wykonanie:

Procedura ta sama. Utworzenie pliku Makefile o zawartości:

0x08 graphic

Kompilator skompiluje plik imie2 o zawartości:

0x08 graphic

Pojawia się komenda SYSREAD, której zadaniem jest pobranie ciągu znaków z klawiatury. Poza zmienną, która zawiera ciąg „Podaj imie” w tym wypadku nazywającą się „msg_hello”, należało wprowadzić drugą, do której zostanie zapisany ciąg znaków zczytany z klawiatury. W tym wypadku nazywa się „msg_hel”. Należało nadać długość drugiej zmiennej, by była w stanie spamiętać odczyt z klawiatury. Uznano, że 20 znaków wystarczy na podanie imienia. (`xx…xx'). Użyto również znacznika „.data”, gdyż z .text pojawiały się problemy przy wyświetlaniu informacji na ekran. Pierwszym przyjętym znakiem była zawsze spacja, która zastępowała pierwszy znak we wprowadzanym ciągu znaków. Przyczyna problemu nie była znana i do tej pory jest nieznana. Rozwiązaniem okazało się potraktowanie informacji nie jako tekst lecz dane.

Wnioski:

Oba programy działały prawidłowo, mimo drobnych problemów przy realizacji drugiego z nich.

Elżbieta Tchorowska 171067

Konrad Kukulski 163930

imie: imie.o

ld -o imie imie.o

imie.o: imie.s

as -o imie.o imie.s

SYSEXIT = 1

SYSREAD = 3

SYSWRITE = 4

STDOUT = 1

STDIN = 0

EXIT_SUCCESS = 0

.align 32

.text

msg_imie: .ascii "Podaj imie \n"

msg_imie_len = . - msg_imie

.global _start

_start:

mov $SYSWRITE, %eax

mov $STDOUT, %ebx

mov $msg_imie, %ecx

mov $msg_imie_len, %edx

int $0x80

mov $SYSEXIT, %eax

mov $EXIT_SUCCESS, %ebx

int $0x80

Imie2 imie2.o

ld -o imie2 imie2.o

imie2.o: imie2.s

as -o imie2.o imie2.s

SYSEXIT = 1

SYSREAD = 3

SYSWRITE = 4

STDOUT = 1

STDIN = 0

EXIT_SUCCESS = 0

.align 32

.data

msg_hello: .ascii "Podaj imie\n"

msg_hello_len = . - msg_hello

msg_hel: .ascii "xxxxxxxxxxxxxxxxxx"

msg_hel_len = . - msg_hel

.global _start

_start:

mov $SYSWRITE, %eax

mov $STDOUT, %ebx

mov $msg_hello, %ecx

mov $msg_hello_len, %edx

int $0x80

mov $SYSREAD, %eax

mov $STDIN, %ebx

mov $msg_hel, %ecx

mov $msg_hel_len, %edx

int $0x80

mov $SYSEXIT, %eax

mov $EXIT_SUCCESS, %ebx

int $0x80



Wyszukiwarka

Podobne podstrony:
Urządzenia peryferyjne lab2, Studia, PWR, 5 semestr, Urządzenia peryferyjne, laboratorium
Urządzenia peryferyjne lab4, Studia, PWR, 5 semestr, Urządzenia peryferyjne, laboratorium
Urządzenia peryferyjne lab5, Studia, PWR, 5 semestr, Urządzenia peryferyjne, laboratorium
Urządzenia peryferyjne lab1, Studia, PWR, 5 semestr, Urządzenia peryferyjne, laboratorium
Architektura komputerów lab3 PT17 TP Kukulski Tchorowska, Studia, PWR, 4 semestr, Architektura kompu
Architektura komputerów lab3 pop, Studia, PWR, 4 semestr, Architektura komputerów 2, laboratoria
Architektura komputerów lab5 PT17 TP Kukulski Tchorowska, Studia, PWR, 4 semestr, Architektura kompu
Architektura komputerów lab2 PT17 TP Kukulski Tchorowska, Studia, PWR, 4 semestr, Architektura kompu
Architektura komputerów la6 PT17 TP Kukulski Tchorowska, Studia, PWR, 4 semestr, Architektura komput
Architektura komputerów5, Studia, PWR, 4 semestr, Architektura komputerów 2, laboratoria
ak projekt, Studia, PWR, 4 semestr, Architektura komputerów 2, projekt
Sprawozdanie5, Studia, PWR, 5 semestr, Grafika komputerowa
sprawko 11, Studia, PWR, 3 semestr, Logika układów cyfrowych, laboratoria
sprawko 3a, Studia, PWR, 3 semestr, Logika układów cyfrowych, laboratoria
sprawko 11a, Studia, PWR, 3 semestr, Logika układów cyfrowych, laboratoria
sprawko 10, Studia, PWR, 3 semestr, Logika układów cyfrowych, laboratoria
TECHNIKA CYFROWA - sprawko lab 1, Studia, PWR, 4 semestr, Podstawy techniki mikroprocesorowej, labor
sprawko 10a, Studia, PWR, 3 semestr, Logika układów cyfrowych, laboratoria
sprawko 4, Studia, PWR, 3 semestr, Logika układów cyfrowych, laboratoria

więcej podobnych podstron