PROGRAMOWANIE NISKOPOZIOMOWE

Podobne dokumenty
PROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

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

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

PROGRAMOWANIE NISKOPOZIOMOWE. Struktury w C. Przykład struktury PN.06. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

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

Programowanie Niskopoziomowe

PROGRAMOWANIE NISKOPOZIOMOWE

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

Ćwiczenie nr 6. Programowanie mieszane

Architektura komputerów

Architektura komputerów

Programowanie niskopoziomowe

Ćwiczenie 3. Konwersja liczb binarnych

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit.

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

Programowanie niskopoziomowe

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

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

PROGRAMOWANIE. Język Asembler

Architektura komputerów

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

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

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Programowanie Niskopoziomowe

Adam Kotynia, Łukasz Kowalczyk

Architektura komputerów. Asembler procesorów rodziny x86

Procesory rodziny x86. Dariusz Chaberski

002 Opcode Strony projektu:

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

Sprzęt i architektura komputerów

Sprzęt i architektura komputerów

Programowanie Niskopoziomowe

Organizacja typowego mikroprocesora

organizacja procesora 8086

Metody Realizacji Języków Programowania

Język ludzki kod maszynowy

2 Przygotował: mgr inż. Maciej Lasota

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.

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

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Programowanie hybrydowe C (C++) - assembler. MS Visual Studio Inline Assembler

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

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

Mikrokontroler ATmega32. Język symboliczny

Jerzy Nawrocki, Wprowadzenie do informatyki

1. Asembler i wstawki asemblerowe w C

Architektura systemów komputerowych. Lista instrukcji procesora

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

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

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

Programowanie hybrydowe łączenie C/C++ z asemblerem

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

Architektura typu Single-Cycle

Architektura komputerów

Zmienne, stałe i operatory

Architektura Systemów Komputerowych

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

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

Programowanie komputera

Cel wykładu. Przedstawienie działania exploitów u podstaw na przykładzie stack overflow.

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

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

Programowanie Niskopoziomowe

Asembler. Æwiczenia praktyczne

Lista instrukcji mikroprocesora Programowanie w assemblerze

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

Podstawy Programowania. Wykład 1

Programowanie w asemblerze Wprowadzenie

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

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

1 Podstawy c++ w pigułce.

Architektura komputerów

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

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Struktura i działanie jednostki centralnej

Informatyka, Ćwiczenie Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

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

Ćwiczenie 1. Architektura von Neumanna model programowy komputera

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

INSTRUKCJE Instrukcje przeniesienia: Instrukcje konwersji: Arytmetyczne instrukcje:

2. Architektura mikrokontrolerów PIC16F8x... 13

Programowanie strukturalne język C - wprowadzenie

Assembler w C++ Syntaksa AT&T oraz Intela

Programowanie niskopoziomowe

Załącznik do ćwiczenia w środowisku MASM32 Przesyłanie danych i zarządzanie danymi

Ćwiczenie nr 4. Zasady kodowania podprogramów

Lista Rozkazów: Język komputera

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

KARTA PRZEDMIOTU. Programowanie niskopoziomowe, C1

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

, " _/'--- " ~ n\l f.4e ' v. ,,v P-J.. ~ v v lu J. ... j -:;.",II. ,""", ",,> I->~" re. dr. f It41I r> ~ '<Q., M-c 'le...,,e. b,n '" u /.

Materiały do wykładu. 7.Architekturax86. Marcin Peczarski. Instytut Informatyki Uniwersytet Warszawski

1 Podstawy c++ w pigułce.

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

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

Programowanie Niskopoziomowe

Szkolenia specjalistyczne

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

Transkrypt:

PROGRAMOWANIE NISKOPOZIOMOWE PN.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 1 / 27

Wprowadzenie 1 Wprowadzenie Systemy liczbowe Organizacja komputera Procesory rodziny 80x86 2 Asembler Język maszynowy Język asemblera Dyrektywy dla asemblera Wejście i wyjście Debugowanie 3 Programowanie hybrydowe Język C i asembler Kompilacja, asemblacja i konsolidacja 4 Ćwiczenia laboratoryjne Zadania Literatura c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 2 / 27

Wprowadzenie Systemy liczbowe Systemy liczbowe Niezbędna znajomość systemów liczbowych dziesiętny c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 3 / 27

Wprowadzenie Systemy liczbowe Systemy liczbowe Niezbędna znajomość systemów liczbowych dziesiętny binarny c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 3 / 27

Wprowadzenie Systemy liczbowe Systemy liczbowe Niezbędna znajomość systemów liczbowych dziesiętny binarny hexadecymalny c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 3 / 27

Pamięć Wprowadzenie Organizacja komputera adresowanie bajtowe (adres 32-bitowy) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 4 / 27

Pamięć Wprowadzenie Organizacja komputera adresowanie bajtowe (adres 32-bitowy) jednostki pamięci: c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 4 / 27

Pamięć Wprowadzenie Organizacja komputera adresowanie bajtowe (adres 32-bitowy) jednostki pamięci: word (słowo 2-bajtowe) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 4 / 27

Pamięć Wprowadzenie Organizacja komputera adresowanie bajtowe (adres 32-bitowy) jednostki pamięci: word (słowo 2-bajtowe) double word (4 bajty) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 4 / 27

Pamięć Wprowadzenie Organizacja komputera adresowanie bajtowe (adres 32-bitowy) jednostki pamięci: word (słowo 2-bajtowe) double word (4 bajty) quad word (8 bajtów) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 4 / 27

Pamięć Wprowadzenie Organizacja komputera adresowanie bajtowe (adres 32-bitowy) jednostki pamięci: word (słowo 2-bajtowe) double word (4 bajty) quad word (8 bajtów) paragraph (16 bajtów) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 4 / 27

Pamięć Wprowadzenie Organizacja komputera adresowanie bajtowe (adres 32-bitowy) jednostki pamięci: word (słowo 2-bajtowe) double word (4 bajty) quad word (8 bajtów) paragraph (16 bajtów) dane w pamięci (reprezentowane numerycznie) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 4 / 27

Wprowadzenie Organizacja komputera Pamięć adresowanie bajtowe (adres 32-bitowy) jednostki pamięci: word (słowo 2-bajtowe) double word (4 bajty) quad word (8 bajtów) paragraph (16 bajtów) dane w pamięci (reprezentowane numerycznie) instrukcje w pamięci (zakodowane binarnie) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 4 / 27

Wprowadzenie Dane i instrukcje programu Organizacja komputera reprezentacje znaków (char) kodowanie: ASCII, Unicode c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 5 / 27

Wprowadzenie Dane i instrukcje programu Organizacja komputera reprezentacje znaków (char) kodowanie: ASCII, Unicode reprezentacje liczb typu: c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 5 / 27

Wprowadzenie Dane i instrukcje programu Organizacja komputera reprezentacje znaków (char) kodowanie: ASCII, Unicode reprezentacje liczb typu: int c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 5 / 27

Wprowadzenie Dane i instrukcje programu Organizacja komputera reprezentacje znaków (char) kodowanie: ASCII, Unicode reprezentacje liczb typu: int unsigned int c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 5 / 27

Wprowadzenie Dane i instrukcje programu Organizacja komputera reprezentacje znaków (char) kodowanie: ASCII, Unicode reprezentacje liczb typu: int unsigned int float c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 5 / 27

Wprowadzenie Dane i instrukcje programu Organizacja komputera reprezentacje znaków (char) kodowanie: ASCII, Unicode reprezentacje liczb typu: int unsigned int float double c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 5 / 27

Wprowadzenie Dane i instrukcje programu Organizacja komputera reprezentacje znaków (char) kodowanie: ASCII, Unicode reprezentacje liczb typu: int unsigned int float double operacje arytmetyczne w zbiorze danych określonego typu c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 5 / 27

Wprowadzenie Organizacja komputera Dane i instrukcje programu reprezentacje znaków (char) kodowanie: ASCII, Unicode reprezentacje liczb typu: int unsigned int float double operacje arytmetyczne w zbiorze danych określonego typu reprezentacja instrukcji maszynowych w języku natywnym procesora c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 5 / 27

Wprowadzenie Organizacja komputera Dane i instrukcje programu reprezentacje znaków (char) kodowanie: ASCII, Unicode reprezentacje liczb typu: int unsigned int float double operacje arytmetyczne w zbiorze danych określonego typu reprezentacja instrukcji maszynowych w języku natywnym procesora reprezentacja kodu źródłowego instrukcji w językach wyższego poziomu c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 5 / 27

CPU Wprowadzenie Organizacja komputera struktura: c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 6 / 27

CPU Wprowadzenie Organizacja komputera struktura: rejestry (PC, IR, robocze) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 6 / 27

CPU Wprowadzenie Organizacja komputera struktura: rejestry (PC, IR, robocze) ALU c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 6 / 27

CPU Wprowadzenie Organizacja komputera struktura: rejestry (PC, IR, robocze) ALU jednostka sterująca c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 6 / 27

Wprowadzenie Organizacja komputera CPU struktura: rejestry (PC, IR, robocze) ALU jednostka sterująca cykl pracy procesora: c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 6 / 27

Wprowadzenie Organizacja komputera CPU struktura: rejestry (PC, IR, robocze) ALU jednostka sterująca cykl pracy procesora: etapy pętli (IF, ID, OF, EX, WB, Int) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 6 / 27

Wprowadzenie Organizacja komputera CPU struktura: rejestry (PC, IR, robocze) ALU jednostka sterująca cykl pracy procesora: etapy pętli (IF, ID, OF, EX, WB, Int) szczególna rola PC c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 6 / 27

Wprowadzenie Organizacja komputera CPU struktura: rejestry (PC, IR, robocze) ALU jednostka sterująca cykl pracy procesora: etapy pętli (IF, ID, OF, EX, WB, Int) szczególna rola PC zdolność do dekodowania instrukcji c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 6 / 27

Wprowadzenie Organizacja komputera CPU struktura: rejestry (PC, IR, robocze) ALU jednostka sterująca cykl pracy procesora: etapy pętli (IF, ID, OF, EX, WB, Int) szczególna rola PC zdolność do dekodowania instrukcji zdolność do wykonywania operacji na operandach c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 6 / 27

Wprowadzenie Organizacja komputera CPU struktura: rejestry (PC, IR, robocze) ALU jednostka sterująca cykl pracy procesora: etapy pętli (IF, ID, OF, EX, WB, Int) szczególna rola PC zdolność do dekodowania instrukcji zdolność do wykonywania operacji na operandach reakcja na przerwanie (rola stosu) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 6 / 27

Procesory 16-bitowe Wprowadzenie Procesory rodziny 80x86 8088, 8086 c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 7 / 27

Procesory 16-bitowe Wprowadzenie Procesory rodziny 80x86 8088, 8086 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 7 / 27

Procesory 16-bitowe Wprowadzenie Procesory rodziny 80x86 8088, 8086 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS tryb pracy: real mode c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 7 / 27

Procesory 16-bitowe Wprowadzenie Procesory rodziny 80x86 8088, 8086 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS tryb pracy: real mode dostęp do całej fizycznej pamięci (1M) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 7 / 27

Procesory 16-bitowe Wprowadzenie Procesory rodziny 80x86 8088, 8086 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS tryb pracy: real mode dostęp do całej fizycznej pamięci (1M) podział na segmenty 64k-bajtowe c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 7 / 27

Procesory 16-bitowe Wprowadzenie Procesory rodziny 80x86 8088, 8086 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS tryb pracy: real mode dostęp do całej fizycznej pamięci (1M) podział na segmenty 64k-bajtowe adres w postaci: selector:offset c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 7 / 27

Procesory 16-bitowe Wprowadzenie Procesory rodziny 80x86 8088, 8086 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS tryb pracy: real mode dostęp do całej fizycznej pamięci (1M) podział na segmenty 64k-bajtowe adres w postaci: selector:offset adres 20 bitowy: 2 4 selector + offset c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 7 / 27

Wprowadzenie Procesory rodziny 80x86 Procesory 16-bitowe 8088, 8086 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS tryb pracy: real mode dostęp do całej fizycznej pamięci (1M) podział na segmenty 64k-bajtowe adres w postaci: selector:offset adres 20 bitowy: 2 4 selector + offset 80286 c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 7 / 27

Wprowadzenie Procesory rodziny 80x86 Procesory 16-bitowe 8088, 8086 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS tryb pracy: real mode dostęp do całej fizycznej pamięci (1M) podział na segmenty 64k-bajtowe adres w postaci: selector:offset adres 20 bitowy: 2 4 selector + offset 80286 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 7 / 27

Wprowadzenie Procesory rodziny 80x86 Procesory 16-bitowe 8088, 8086 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS tryb pracy: real mode dostęp do całej fizycznej pamięci (1M) podział na segmenty 64k-bajtowe adres w postaci: selector:offset adres 20 bitowy: 2 4 selector + offset 80286 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS tryb pracy: protected mode c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 7 / 27

Wprowadzenie Procesory rodziny 80x86 Procesory 16-bitowe 8088, 8086 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS tryb pracy: real mode dostęp do całej fizycznej pamięci (1M) podział na segmenty 64k-bajtowe adres w postaci: selector:offset adres 20 bitowy: 2 4 selector + offset 80286 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS tryb pracy: protected mode dostęp do obszarów 16M c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 7 / 27

Wprowadzenie Procesory rodziny 80x86 Procesory 16-bitowe 8088, 8086 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS tryb pracy: real mode dostęp do całej fizycznej pamięci (1M) podział na segmenty 64k-bajtowe adres w postaci: selector:offset adres 20 bitowy: 2 4 selector + offset 80286 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS tryb pracy: protected mode dostęp do obszarów 16M ochrona wzajemna programów c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 7 / 27

Wprowadzenie Procesory rodziny 80x86 Procesory 16-bitowe 8088, 8086 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS tryb pracy: real mode dostęp do całej fizycznej pamięci (1M) podział na segmenty 64k-bajtowe adres w postaci: selector:offset adres 20 bitowy: 2 4 selector + offset 80286 rejestry 16-bitowe AX, BX, CX, DX, SI, DI, BP, SP, CS, DS, SS, ES, IP, FLAGS tryb pracy: protected mode dostęp do obszarów 16M ochrona wzajemna programów segmenty 64k c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 7 / 27

Procesory 32-bitowe Wprowadzenie Procesory rodziny 80x86 80386 c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 8 / 27

Procesory 32-bitowe Wprowadzenie Procesory rodziny 80x86 80386 rejestry 32-bitowe EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP, FLAGS c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 8 / 27

Procesory 32-bitowe Wprowadzenie Procesory rodziny 80x86 80386 rejestry 32-bitowe EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP, FLAGS rejestry 16-bitowe FS,GS c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 8 / 27

Procesory 32-bitowe Wprowadzenie Procesory rodziny 80x86 80386 rejestry 32-bitowe EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP, FLAGS rejestry 16-bitowe FS,GS tryb pracy: 32 bit protected mode c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 8 / 27

Procesory 32-bitowe Wprowadzenie Procesory rodziny 80x86 80386 rejestry 32-bitowe EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP, FLAGS rejestry 16-bitowe FS,GS tryb pracy: 32 bit protected mode dostęp do 4G fizycznej pamięci c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 8 / 27

Procesory 32-bitowe Wprowadzenie Procesory rodziny 80x86 80386 rejestry 32-bitowe EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP, FLAGS rejestry 16-bitowe FS,GS tryb pracy: 32 bit protected mode dostęp do 4G fizycznej pamięci podział na segmenty do 4G c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 8 / 27

Procesory 32-bitowe Wprowadzenie Procesory rodziny 80x86 80386 rejestry 32-bitowe EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP, FLAGS rejestry 16-bitowe FS,GS tryb pracy: 32 bit protected mode dostęp do 4G fizycznej pamięci podział na segmenty do 4G adres 32-bitowy c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 8 / 27

Wprowadzenie Procesory rodziny 80x86 Procesory 32-bitowe 80386 rejestry 32-bitowe EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP, FLAGS rejestry 16-bitowe FS,GS tryb pracy: 32 bit protected mode dostęp do 4G fizycznej pamięci podział na segmenty do 4G adres 32-bitowy 80486, Pentium, Pentium Pro, MMX c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 8 / 27

Wprowadzenie Procesory rodziny 80x86 Procesory 32-bitowe 80386 rejestry 32-bitowe EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP, FLAGS rejestry 16-bitowe FS,GS tryb pracy: 32 bit protected mode dostęp do 4G fizycznej pamięci podział na segmenty do 4G adres 32-bitowy 80486, Pentium, Pentium Pro, MMX implementacja technologii przyspieszania pracy c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 8 / 27

Wprowadzenie Procesory rodziny 80x86 Procesory 32-bitowe 80386 rejestry 32-bitowe EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP, FLAGS rejestry 16-bitowe FS,GS tryb pracy: 32 bit protected mode dostęp do 4G fizycznej pamięci podział na segmenty do 4G adres 32-bitowy 80486, Pentium, Pentium Pro, MMX implementacja technologii przyspieszania pracy wzrost złożoności strukturalnej c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 8 / 27

Asembler 1 Wprowadzenie Systemy liczbowe Organizacja komputera Procesory rodziny 80x86 2 Asembler Język maszynowy Język asemblera Dyrektywy dla asemblera Wejście i wyjście Debugowanie 3 Programowanie hybrydowe Język C i asembler Kompilacja, asemblacja i konsolidacja 4 Ćwiczenia laboratoryjne Zadania Literatura c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 9 / 27

Język maszynowy Asembler Język maszynowy instrukcje w pamięci zakodowane numerycznie c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 10 / 27

Język maszynowy Asembler Język maszynowy instrukcje w pamięci zakodowane numerycznie kod operacji c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 10 / 27

Język maszynowy Asembler Język maszynowy instrukcje w pamięci zakodowane numerycznie kod operacji zmienna długość rozkazów c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 10 / 27

Język maszynowy Asembler Język maszynowy instrukcje w pamięci zakodowane numerycznie kod operacji zmienna długość rozkazów w instrukcji może być operand lub jego adres c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 10 / 27

Język maszynowy Asembler Język maszynowy instrukcje w pamięci zakodowane numerycznie kod operacji zmienna długość rozkazów w instrukcji może być operand lub jego adres np. 0x03C3 (EAX := EAX + EBX) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 10 / 27

Język maszynowy Asembler Język maszynowy instrukcje w pamięci zakodowane numerycznie kod operacji zmienna długość rozkazów w instrukcji może być operand lub jego adres np. 0x03C3 (EAX := EAX + EBX) asembler koduje na podstawie kodu źródłowego c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 10 / 27

Asembler Język maszynowy Język maszynowy instrukcje w pamięci zakodowane numerycznie kod operacji zmienna długość rozkazów w instrukcji może być operand lub jego adres np. 0x03C3 (EAX := EAX + EBX) asembler koduje na podstawie kodu źródłowego instrukcje asemblera instrukcje maszynowe, np. c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 10 / 27

Asembler Język maszynowy Język maszynowy instrukcje w pamięci zakodowane numerycznie kod operacji zmienna długość rozkazów w instrukcji może być operand lub jego adres np. 0x03C3 (EAX := EAX + EBX) asembler koduje na podstawie kodu źródłowego instrukcje asemblera instrukcje maszynowe, np. add eax, ebx c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 10 / 27

Asembler Język maszynowy Język maszynowy instrukcje w pamięci zakodowane numerycznie kod operacji zmienna długość rozkazów w instrukcji może być operand lub jego adres np. 0x03C3 (EAX := EAX + EBX) asembler koduje na podstawie kodu źródłowego instrukcje asemblera instrukcje maszynowe, np. add eax, ebx asemblery: NASM, MASM, TASM,... c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 10 / 27

Instrukcje asemblera Asembler Język asemblera add eax, ebx c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 11 / 27

Asembler Język asemblera Instrukcje asemblera add eax, ebx lista instrukcji c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 11 / 27

Asembler Język asemblera Instrukcje asemblera add eax, ebx lista instrukcji typy operandów c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 11 / 27

Asembler Język asemblera Instrukcje asemblera add eax, ebx lista instrukcji typy operandów immediate (operand w instrukcji) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 11 / 27

Asembler Język asemblera Instrukcje asemblera add eax, ebx lista instrukcji typy operandów immediate (operand w instrukcji) register (rejestrowy) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 11 / 27

Asembler Język asemblera Instrukcje asemblera add eax, ebx lista instrukcji typy operandów immediate (operand w instrukcji) register (rejestrowy) memory (w rejestrze adres względem początku segmentu) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 11 / 27

Asembler Język asemblera Instrukcje asemblera add eax, ebx lista instrukcji typy operandów immediate (operand w instrukcji) register (rejestrowy) memory (w rejestrze adres względem początku segmentu) implied (domyślny) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 11 / 27

Asembler Język asemblera Instrukcje asemblera add eax, ebx lista instrukcji typy operandów immediate (operand w instrukcji) register (rejestrowy) memory (w rejestrze adres względem początku segmentu) implied (domyślny) np. mov dest, src c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 11 / 27

Asembler Język asemblera Instrukcje asemblera add eax, ebx lista instrukcji typy operandów immediate (operand w instrukcji) register (rejestrowy) memory (w rejestrze adres względem początku segmentu) implied (domyślny) np. mov dest, src operandy nie mogą być typu memory (obydwa jednocześnie) c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 11 / 27

Asembler Język asemblera Instrukcje asemblera add eax, ebx lista instrukcji typy operandów immediate (operand w instrukcji) register (rejestrowy) memory (w rejestrze adres względem początku segmentu) implied (domyślny) np. mov dest, src operandy nie mogą być typu memory (obydwa jednocześnie) rozmiary operandów muszą być identyczne c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 11 / 27

Asembler Język asemblera Fragment programu w asemblerze x86 mov eax, 3 mov bx, ax add eax, 4 ; eax = eax + 4 add al, ah ; al = al + ah sub bx, 10 ; bx = bx - 10 sub ebx, edi ; ebx = ebx - edi inc ecx ; ecx++ dec dl ; dl-- c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 12 / 27

Asembler Dyrektywy dla asemblera Dyrektywy dla asemblera Asembler nie tłumaczy dyrektyw lecz je wykonuje: symbol equ value c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 13 / 27

Asembler Dyrektywy dla asemblera Dyrektywy dla asemblera Asembler nie tłumaczy dyrektyw lecz je wykonuje: symbol equ value %define SIZE 100 c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 13 / 27

Asembler Dyrektywy dla asemblera Dyrektywy dla asemblera Asembler nie tłumaczy dyrektyw lecz je wykonuje: symbol equ value %define SIZE 100 mov eax, SIZE c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 13 / 27

Asembler Dyrektywy dla asemblera Dyrektywy dla asemblera Asembler nie tłumaczy dyrektyw lecz je wykonuje: symbol equ value %define SIZE 100 mov eax, SIZE definiowanie miejsca w segmentach danych c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 13 / 27

Asembler Dyrektywy dla asemblera Dyrektywy definiujące miejsce w segmentach danych Dane będą pamiętane pod kolejnymi adresami pamięci z inicjalizacją: db, dw, dd, dq, dt L1 db 0 L2 dw 1000 L3 db 110101b L6 dd 1A92h L8 db A L9 db 0, 1, 2, 3 L10 db w, o, r, d, 0 ; łańcuch (string) L11 db word, 0 L12 times 100 db 0 c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 14 / 27

Asembler Dyrektywy dla asemblera Dyrektywy definiujące miejsce w segmentach danych Dane będą pamiętane pod kolejnymi adresami pamięci z inicjalizacją: db, dw, dd, dq, dt L1 db 0 L2 dw 1000 L3 db 110101b L6 dd 1A92h L8 db A L9 db 0, 1, 2, 3 L10 db w, o, r, d, 0 ; łańcuch (string) L11 db word, 0 L12 times 100 db 0 bez inicjalizacji: resb, resw, resd, resq, rest L7 resb 1 L13 resw 100; rezerwacja 100 słów c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 14 / 27

Asembler Dyrektywy dla asemblera Dereferencja i adresowanie dostęp do danych w pamięci mov al, [L6]; pobierane tylko pierwsze słowo mov dword [L6], 1; specyfikacja formatu dla danej c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 15 / 27

Asembler Dyrektywy dla asemblera Dereferencja i adresowanie dostęp do danych w pamięci mov al, [L6]; pobierane tylko pierwsze słowo mov dword [L6], 1; specyfikacja formatu dla danej specyfikacje formatu: byte, word, dword, qword, tword c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 15 / 27

Asembler Dyrektywy dla asemblera Dereferencja i adresowanie dostęp do danych w pamięci mov al, [L6]; pobierane tylko pierwsze słowo mov dword [L6], 1; specyfikacja formatu dla danej specyfikacje formatu: byte, word, dword, qword, tword zastosowania: mov al, [L1]; bajt spod L1 -> AL mov eax, L1; adres bajtu -> EAX mov [L1], ah; AH -> pamięci pod adres L1 mov eax, [L6]; dword spod L6 -> EAX add eax, [L6] add [L6], eax c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 15 / 27

Operacje wejścia i wyjścia Asembler Wejście i wyjście brak bibliotek standardowych c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 16 / 27

Asembler Wejście i wyjście Operacje wejścia i wyjścia brak bibliotek standardowych bezpośredni dostęp do urządzeń jest operacją uprzywilejowaną wymaga trybu protected mode c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 16 / 27

Asembler Wejście i wyjście Operacje wejścia i wyjścia brak bibliotek standardowych bezpośredni dostęp do urządzeń jest operacją uprzywilejowaną wymaga trybu protected mode trzeba używać funkcji systemu operacyjnego c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 16 / 27

Asembler Wejście i wyjście Operacje wejścia i wyjścia brak bibliotek standardowych bezpośredni dostęp do urządzeń jest operacją uprzywilejowaną wymaga trybu protected mode trzeba używać funkcji systemu operacyjnego można wykorzystać funkcje języka C c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 16 / 27

Asembler Wejście i wyjście Operacje wejścia i wyjścia brak bibliotek standardowych bezpośredni dostęp do urządzeń jest operacją uprzywilejowaną wymaga trybu protected mode trzeba używać funkcji systemu operacyjnego można wykorzystać funkcje języka C można wykorzystać procedury z pliku: asm io.asm %include "asm_io.inc" ; makrodefinicje c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 16 / 27

Asembler Wejście i wyjście Funkcje we/wy wywoływane za pomocą instrukcji CALL print int EAX ekran monitora print char AL ekran (kod znaku) print string [EAX] ekran print nl nowa linia read int EAX liczba całkowita z klawiatury read char EAX kod znaku z klawiatury c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 17 / 27

Asembler Debugowanie Makra służące do debugowania dump regs zawartości rejestrów ekran monitora dump mem zawartość pamięci ekran dump stack stos ekran dump math rejestry koprocesora ekran c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 18 / 27

Programowanie hybrydowe 1 Wprowadzenie Systemy liczbowe Organizacja komputera Procesory rodziny 80x86 2 Asembler Język maszynowy Język asemblera Dyrektywy dla asemblera Wejście i wyjście Debugowanie 3 Programowanie hybrydowe Język C i asembler Kompilacja, asemblacja i konsolidacja 4 Ćwiczenia laboratoryjne Zadania Literatura c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 19 / 27

Programowanie hybrydowe Program główny w języku C Język C i asembler Plik: driver.c #include "cdecl.h" int PRE_CDECL asm_main( void ) POST_CDECL; int main() { int ret_status; ret_status = asm_main(); return ret_status; } tryb pracy: protected mode 32-bit. c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 20 / 27

Programowanie hybrydowe Program główny w języku C Język C i asembler Plik: driver.c #include "cdecl.h" int PRE_CDECL asm_main( void ) POST_CDECL; int main() { int ret_status; ret_status = asm_main(); return ret_status; } tryb pracy: protected mode 32-bit. kompilator C zainicjalizuje segmenty c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 20 / 27

Programowanie hybrydowe Program główny w języku C Język C i asembler Plik: driver.c #include "cdecl.h" int PRE_CDECL asm_main( void ) POST_CDECL; int main() { int ret_status; ret_status = asm_main(); return ret_status; } tryb pracy: protected mode 32-bit. kompilator C zainicjalizuje segmenty można korzystać z bibliotek C c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 20 / 27

Programowanie hybrydowe Program główny w języku C Język C i asembler Plik: driver.c #include "cdecl.h" int PRE_CDECL asm_main( void ) POST_CDECL; int main() { int ret_status; ret_status = asm_main(); return ret_status; } tryb pracy: protected mode 32-bit. kompilator C zainicjalizuje segmenty można korzystać z bibliotek C wywołuje funkcję asm main() napisaną w asemblerze c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 20 / 27

Programowanie hybrydowe Język C i asembler Struktura podprogramu w asemblerze (wołanego z C) Plik: first.asm %include "asm_io.inc" segment.data prompt1 db "Wprowadź liczbę: ", 0... segment.bss ; dane niezainicjalizowane input1 resd 1... segment.text global _asm_main _asm_main: enter 0,0 pusha... popa mov eax,0 leave ret c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 21 / 27

Programowanie hybrydowe Kompilacja, asemblacja i konsolidacja Kompilacja, asemblacja i konsolidacja Korzystając z NASM i DJGPP na platformie Windows: > gcc -c driver.c > nasm -f coff asm_io.asm > nasm -f coff first.asm -l first.lst > gcc -o first.exe driver.o first.o asm_io.o c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 22 / 27

Ćwiczenia laboratoryjne 1 Wprowadzenie Systemy liczbowe Organizacja komputera Procesory rodziny 80x86 2 Asembler Język maszynowy Język asemblera Dyrektywy dla asemblera Wejście i wyjście Debugowanie 3 Programowanie hybrydowe Język C i asembler Kompilacja, asemblacja i konsolidacja 4 Ćwiczenia laboratoryjne Zadania Literatura c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 23 / 27

Ćwiczenia laboratoryjne Zadania Zadania: I 1 Przeprowadzić kompilację, asemblacje i konsolidację przykładowego programu, a następnie przeanalizować listing i uruchomić program 2 Napisać podprogram w asemblerze definiujący zmienne z nadanymi wartościami początkowymi. Zbadać stan pamięci dla reprezentacji a) 16-bit, b) 32-bit i wyprowadzić na standardowe wyjście zawartość paragrafów pamięci z tymi zmiennymi. Zbadać sposób pamiętania danych wielobajtowych. Ustalić adresy zmiennych. int n = -3; int h = 0xAAFF; m = 0b11110000; char ch = A ; string adres = Kielce, ul. Nowa 1A ; c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 24 / 27

Ćwiczenia laboratoryjne Zadania Zadania: II 1 Wprowadzić dodatkowe dyrektywy definiujące zmienne bez nadawania wartości początkowych: int A[20]; byte B[100]; 2 Rozbudować program o instrukcje czytania ze standardowego wejścia nowych wartości dla zmiennych (wypisać też zawartość odpowiednich obszarów segmentu danych). c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 25 / 27

Ćwiczenia laboratoryjne Zadania Zadania: III Rozbudować program o niżej wskazane elementy (na standardowe wyjście wyprowadzać wartości modyfikowanych zmiennych oraz zawartość rejestrów i stosownych paragrafów pamięci) 1 instrukcje wprowadzania wartości do wskazanych rejestrów roboczych procesora 2 instrukcje kopiowania zmiennych do wskazanych rejestrów roboczych procesora 3 instrukcje nadawania ustalonych wartości zadeklarowanym zmiennym (wskazując typ zmiennej) 4 instrukcje zapamiętywania w zmiennych wartości zaproponowanych wyrażeń arytmetycznych (w wyrażeniach użyć operacji dodawania, odejmowania, inkrementacji, dekrementacji). c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 26 / 27

Literatura Ćwiczenia laboratoryjne Literatura A. S. Tanenbaum, Strukturalna organizacja systemów komputerowych, Helion, 2006. J. Biernat, Architektura komputerów, OWPW, 2005. R. Hyde, Profesjonalne programowanie, Helion, 2005. R. Hyde, Asembler. Sztuka programowania, Helion, 2004. G. Mazur, Programowanie niskopoziomowe, http://wazniak.mimuw.edu.pl. P.A. Carter, PC Assembly Language, http://www.drpaulcarter.com/pcasm/. D.W. Lewis, Między asemblerem a językiem C. Podstawy oprogramowania wbudowanego, RM, 2004. c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 27 / 27