Programowanie niskopoziomowe

Podobne dokumenty
Programowanie niskopoziomowe

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

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

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

KARTA PRZEDMIOTU. Programowanie niskopoziomowe, C1

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

Ćwiczenie nr 3. Temat: Definicje i wykorzystanie funkcji, parametry funkcji

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

KARTA PRZEDMIOTU. Programowanie niskopoziomowe, C2. Low Level Programming Informatyka

Programowanie komputerowe. Zajęcia 3

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

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

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

Proste algorytmy w języku C

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Co nie powinno być umieszczane w plikach nagłówkowych:

Ćwiczenie nr 6. Programowanie mieszane

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

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

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

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

PRZEWODNIK PO PRZEDMIOCIE

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

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

Podstawy programowania C. dr. Krystyna Łapin

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

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

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1 Podstawy c++ w pigułce.

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Programowanie w elektronice: Podstawy C

( wykł. dr Marek Piasecki )

Programowanie Niskopoziomowe

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Podstawy programowania (1)

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

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

Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Programowanie niskopoziomowe

Wstęp do Programowania, laboratorium 02

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

Programowanie Obiektowe i C++

Podstawy programowania - 1

Język C - podstawowe informacje

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Część 4 życie programu

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Wstęp do programowania

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

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

Funkcja (podprogram) void

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Język C zajęcia nr 11. Funkcje

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

Pytania sprawdzające wiedzę z programowania C++

Podstawy Programowania C++

elektrotechnika I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

Programowanie komputerowe. Zajęcia 4

Języki i metodyka programowania. Wprowadzenie do języka C

Zuzanna Hartleb i Artur Angiel

Podstawy programowania w języku C

Podstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

1 Podstawy c++ w pigułce.

Programowanie strukturalne i obiektowe

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Języki i metody programowania. Omówienie języków C, C++ i Java

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Proste algorytmy w języku C

KURS C/C++ WYKŁAD 1. Pierwszy program

Język ludzki kod maszynowy

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Spis treści JĘZYK C - PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI, REKURENCJA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Microsoft IT Academy kurs programowania

Programowanie strukturalne język C - wprowadzenie

1. Asembler i wstawki asemblerowe w C

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

wykład I uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Wstęp do języka C wykład I dr Jarosław Mederski Spis Ogólne informacje

Ćwiczenie 5 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

PROGRAMOWANIE NISKOPOZIOMOWE. Adresowanie pośrednie rejestrowe. Stos PN.04. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

Wskaźniki. Informatyka

Programowanie w języku C++

Język C zajęcia nr 5

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!

Język programowania PASCAL

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Tablice, funkcje - wprowadzenie

Architektura komputerów. Asembler procesorów rodziny x86

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Wstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO

Podstawy programowania komputerów

Podstawy Programowania.

Język C, tablice i funkcje (laboratorium)

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

Transkrypt:

Politechnika Rzeszowska Wydział Elektrotechniki i Informatyki Katedra Informatyki i Automatyki Laboratorium Programowanie niskopoziomowe Rzeszów 2004

Ćwiczenie 1. Zmienne, adresy, wskaźniki Celem ćwiczenia jest zapoznanie się ze sposobem deklaracji zmiennych i adresowania pamięci w języku asemblera procesora 8086. Zagadnienia do przygotowania deklaracje i interpretacje zmiennych w języku C wskaźniki i tablice, operacje na wskaźnikach struktury i unie budowa elementarnych programów w języku asemblera asemblacja, linkowanie i śledzenie programów w pakiecie Borland C 3.1 Przebieg ćwiczenia napisać program podany w załączniku w języku asemblera, np. lab1.asm przeprowadzić jego kompilację i linkowanie za pomocą pakietu Borland C 3.1: tasm /zi lab1.asm - asemblacja tlink /v lab1.obj - linkowanie wykonać sprawdzenie poprawności działania programu za pomocą Turbo Debugera. Warunki zaliczenia ćwiczenia Zaliczenie ćwiczenia polega na demonstracji działania programu prowadzącemu. Sprawozdanie Sprawozdanie powinno zawierać wydruk programu z obszernymi komentarzami zawierającymi wartości zmiennych po wykonaniu instrukcji oraz graficzną prezentację zadeklarowanych zmiennych strukturalnych (tablic, struktur i unii). Literatura Kernigham, Ritchie, Język C, WNT 1989 Dokumentacja pakietu Borland C 3.1 Wróbel Eugeniusz, Asembler 8086/88 Wacławek Roland, ABC Asemblera Scanlon Leo J., Assembler 8086/8088/80286 Kruk Stanisław, Język Assembler dla początkujących Nawrocki J. R., Programowanie komputerów IBM PC w języku Asemblera metodą systematyczną Syck Gary, Turbo Assembler : biblia użytkownika

Deklaracje zmiennych char c,c1,c2; int i; char Tabl[10]; char Napis[] = "asembler"; char *ptr; struct hilo char l; char h;; union u1 int i; struct hilo c;; union u1 utab[4]; union u1 *uptr; Instrukcje programu void main(void) c=1; i=-1; ptr=tabl; *ptr++=1; *ptr++=2; c=*((ptr--)-1); utab[0].i =0x2211; utab[1].c.l=0x33; utab[1].c.h=0x44; utab[2].c.l=0x55; utab[2].c.h=0x66; ptr=(char *)&utab[0]; i=*(ptr+1); ptr = (char *) ((union u1 *)ptr+1); c1=*ptr++; c2=*ptr++; uptr = utab; i=(uptr+1)->i; uptr++; i=(uptr+1)->i;

Ćwiczenie 2. Instrukcje warunkowe, wyboru i pętle Celem ćwiczenia jest zapoznanie się ze sposobem realizacji podstawowych instrukcji warunkowych oraz pętli w języku asemblera procesora 8086. Zagadnienia do przygotowania składnia i semantyka instrukcji if...then...else w języku C budowa instrukcji wyboru switch składnia i semantyka (schematy blokowe) pętli while... i for... instrukcje arytmetyczne i porównania procesora 8086 interpretacja znaczników w słowie stanu procesora rozkazy skoków warunkowych i bezwarunkowych (względnych i bezwzględnych). Przebieg ćwiczenia przygotować schemat blokowy programu podanego w załączniku w języku asemblera przeprowadzić jego kompilację i linkowanie za pomocą pakietu Borland C 3.1 sprawdzić poprawność działania programu za pomocą Turbo Debugera, zwrócić szczególną uwagę na prawidłowość warunku opuszczenia pętli i zawartość tablic. Warunki zaliczenia ćwiczenia Zaliczenie ćwiczenia polega na demonstracji działania programu prowadzącemu. Sprawozdanie Sprawozdanie powinno zawierać wydruk programu z obszernymi komentarzami oraz schematy blokowe wszystkich instrukcji strukturalnych. Literatura Kernigham, Ritchie, Język C, WNT 1989 Dokumentacja pakietu Borland C 3.1 Wróbel Eugeniusz, Asembler 8086/88 Wacławek Roland, ABC Asemblera Scanlon Leo J., Assembler 8086/8088/80286 Kruk Stanisław, Język Assembler dla początkujących Nawrocki J. R., Programowanie komputerów IBM PC w języku Asemblera metodą systematyczną Syck Gary, Turbo Assembler : biblia użytkownika

Deklaracje zmiennych char napis1[4] = ala ; char napis2[4]; char napis3[4]; char napis4[4]; char * ptr1,* ptr2; int i,j; Instrukcje programu void main(void) ptr1=napis1; ptr2=napis2; ptr3=napis3; /* kopiowanie lancuchow poprzez zmienne indeksy wskazowka zastosuj instrukcje typu MOV napis2[bx],al */ for(i=0,j=0; napis1[i]!=0; i++,j++) napis2[j]=napis1[i]; /* czy wartosci koncowe zmiennych indeksowych i,j sa zgodne ze standardem jezyka C? */ /* kopiowanie lancuchow poprzez wskazniki */ while(*ptr3++=*ptr2++); /* wskazówka wykorzystaj efektywnie instrukcje MOV [BX],AL */ /* instrukcja wyboru switch */ i=2; /* wskazowka: w programie zastosuj instrukcje... CMP AX,1 JE case1 CMP AX,2 JE case2... case1:...... case2: Zastanow sie, gdzie wstawic odpowiedniki break? Jakie znaczenie w tej konstrukcji ma default? Jaka wartosc ma zmienna j po wykonaniu instrukcji switch? */ i=0; switch (i) case 0: j=napis1[0]; case 1: j=napis1[1]; break; case 2: j=napis1[2];break; default: j='a';

Ćwiczenie 3. Realizacja funkcji, przekazywanie parametrów, stos i zmienne lokalne Celem ćwiczenia jest zapoznanie się ze sposobem realizacji funkcji, sposobów przekazywania parametrów przez stos oraz implementacji zmiennych lokalnych. Zagadnienia do przygotowania sposoby adresowania stosu rejestr SP interpretacja pojęcia zmiennej lokalnej, statycznej i dynamicznej Przebieg ćwiczenia przygotować schemat blokowy programu podanego w załączniku w języku asemblera, przeprowadzić jego kompilację i linkowanie za pomocą pakietu Borland C 3.1 sprawdzić poprawność działania programu za pomocą Turbo Debugera zwrócić szczególną uwagę na zawartość i rozmiar stosu przed i po zakończeniu wykonywania funkcji Warunki zaliczenia ćwiczenia Zaliczenie ćwiczenia polega na demonstracji działania programu prowadzącemu. Sprawozdanie Sprawozdanie powinno zawierać wydruk programu z obszernymi komentarzami oraz rysunki ilustrujące zawartość stosu w chwili wywołania funkcji i rozmieszczenie zmiennych lokalnych. Zwróć uwagę na rzutowanie typów. Literatura Kernigham, Ritchie, Język C, WNT 1989 Dokumentacja pakietu Borland C 3.1 Wróbel Eugeniusz, Asembler 8086/88 Wacławek Roland, ABC Asemblera Scanlon Leo J., Assembler 8086/8088/80286 Kruk Stanisław, Język Assembler dla początkujących Nawrocki J. R., Programowanie komputerów IBM PC w języku Asemblera metodą systematyczną Syck Gary, Turbo Assembler : biblia użytkownika

Deklaracje zmiennych int i,j; char c; char napis1[4]="ala"; char napis2[4]; char *ptr1,*ptr2; Program /* funkcja bez zmiennych lokalnych - przedstaw graficznie zawartosc stosu w trakcie wykonywania funkcji */ char *copy(char *p1,char *p2) /* W jaki sposob sa pobierane parametry? */ while(*p2++ = *p1++); return p2; /* W ktorym rejestrze zwracana jest wartosc wskaznika? */ /* funkcja ze zmiennymi lokalnymi i parametrami roznego rozmiaru - kopiowanie z ograniczeniem max. ilosci elementow */ int copy2(char *src,char *dst, char ile) int i=0; while(*dst++ = *src++) if(++i>=ile) break; *dst=0; return i; void main(void) ptr1=napis1; ptr2=napis2; (void) copy(ptr1,ptr2); /* Sprawdz, cz zawartosc stosu jest taka sama jak przed wywolaniem funkcji */ c=copy2(ptr1,ptr2,2); /* uwaga na niezgodnosc typow!!! */

Ćwiczenie 4. Funkcje rekurencyjne i biblioteczne Celem ćwiczenia jest zapoznanie się ze sposobem realizacji funkcji rekurencyjnej oraz wywoływania funkcji bibliotecznych z własnymi programami. Program w C do realizacji w asemblerze /* plik do laboratorium 4 z architektury komputerow II */ #include "stdio.h" /* funkcja rekurencyjna */ unsigned int silnia(int n) if (n<0) return -1; else if (n==0) return 1; else return n * silnia(n-1); //prototyp funkcji wieloargumentowej printf //int printf(const char * format, arg1, arg2,...); void main(void) int i=3; i=silnia(i); printf("%d",i); /* jaka jest kolejnosc parametrow? */ lab4.asm tasm.exe /zi lab4.asm CALL main _printf lab4.asm c0s.obj cs.lib lab4.exe tlink /v lab4.obj c0s.obj,lab4.exe,,cs.lib Informacje wprowadzające Program wynikowy zostanie otrzymany w wyniku połączenia modułu asemblerowego z modułem bibliotecznym cs.lib (z funkcją printf) oraz zbiorem c0s.obj zawierającym funkcje podstawowe środowiska borland C. W programie należy użyć dyrektyw PUBLIC i EXTRN. Uwaga: funkcja _main kończy się instrukcją RET. Jest ona wywoływana z modułu c0s.

Przebieg ćwiczenia przygotować plik lab4.asm wykonać kompilację i linkowanie sprawdzić za pomocą debugera poprawność działania programu (wskazówka: ustawić pułapki na etykietę _main) uruchomić lab4.exe z poziomu systemu DOS Warunki zaliczenia ćwiczenia Zaliczenie ćwiczenia polega na demonstracji działania programu prowadzącemu. Sprawozdanie Sprawozdanie powinno zawierać wydruk programu ze szczegółowym wyjaśnieniem zastosowanych dyrektyw asemblera i krótką charakterystyką wykorzystanych modułów bibliotecznych pakietu Borland C. Literatura Kernigham, Ritchie, Język C, WNT 1989 Dokumentacja pakietu Borland C 3.1 Wróbel Eugeniusz, Asembler 8086/88 Wacławek Roland, ABC Asemblera Scanlon Leo J., Assembler 8086/8088/80286 Kruk Stanisław, Język Assembler dla początkujących Nawrocki J. R., Programowanie komputerów IBM PC w języku Asemblera metodą systematyczną Syck Gary, Turbo Assembler : biblia użytkownika

Laboratorium Architektury Komputerów II Ćwiczenie 5. Funkcje biosu, dos i programy rezydentne Celem ćwiczenia jest napisanie prostego programu rezydentnego przy wykorzystaniu funkcji dostępnych w systemie operacyjnym. Program w C do realizacji w asemblerze // #include "dos.h" void interrupt (*old_1c)(void); //wskaznik daleki int volatile i; //zachowaj wszystkie rejestry na stosie void interrupt new_1c(void) i++; //w tym miejscu wyswietl znak wyznaczony jako // (i%10)+'0' w lewym gornym rogu ekranu //1 - za pomoca funkcji BIOS-u (przerwanie int 10H*) //2 - bezposrednio adresujac pamiec ekranu old_1c(); //wywolanie starej funkcji obslugi przerwania //odtworz rejestry i powroc z przerwania void main(void) old_1c = getvect(0x1c); // pobierz wektor przerwania za // pomoca funkcji systemu DOS setvect(0x1c,new_1c); //ustaw wektor keep(0,512/16); //zakoncz program, zostawiając go rezydentnym Przebieg ćwiczenia przygotować plik lab5.asm wykonać kompilację i linkowanie uruchomić lab5.exe z poziomu systemu DOS Warunki zaliczenia ćwiczenia Zaliczenie ćwiczenia polega na demonstracji działania programu prowadzącemu. Sprawozdanie Sprawozdanie powinno zawierać wydruk programu z komentarzami. Literatura Kernigham, Ritchie, Język C, WNT 1989 Dokumentacja pakietu Borland C 3.1 Wróbel Eugeniusz, Asembler 8086/88 Scanlon Leo J., Assembler 8086/8088/80286 Kruk Stanisław, Język Assembler dla początkujących Syck Gary, Turbo Assembler : biblia użytkownika