Jerzy Nawrocki, Wprowadzenie do informatyki

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

Jerzy Nawrocki, Wprowadzenie do informatyki

Programowanie niskopoziomowe

Sterowanie pracą programu

Architektura typu Single-Cycle

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

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Struktura i działanie jednostki centralnej

Sprzęt i architektura komputerów

Architektura komputerów. Asembler procesorów rodziny x86

Programowanie komputera

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

Sprzęt i architektura komputerów

Architektura komputerów

Architektura komputerów

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

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

Lista Rozkazów: Język komputera

Organizacja typowego mikroprocesora

Przykładowe pytania DSP 1

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

PROGRAMOWANIE NISKOPOZIOMOWE

Lista instrukcji mikroprocesora Programowanie w assemblerze

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

organizacja procesora 8086

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

Wstęp do Reverse engineeringu

Architektura Systemów Komputerowych

PLC1: Programowanie sterowników logicznych SIEMENS SIMATIC S7-300/400 - kurs podstawowy

Załącznik do ćwiczenia w środowisku MASM32 wersji 10 Sterowanie przebiegiem wykonania programu

Mikrokontroler ATmega32. Język symboliczny

Podstawy techniki mikroprocesorowej. Dr inż. Grzegorz Kosobudzki p.311a A-5. Tel

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

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

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2010/2011

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

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

Zuzanna Hartleb i Artur Angiel

Programowanie w C++ 1 Opis procesora Sextium II. Opis procesora Sextium. materiały dydaktyczne udostępnione przez Tomasza Wierzbickiego

Architektura komputerów wer. 7

Procesory rodziny x86. Dariusz Chaberski

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

Programowanie Niskopoziomowe

while(wyrażenie) instrukcja

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

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

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Ćwiczenie nr 6. Programowanie mieszane

Jerzy Nawrocki, Wprowadzenie do informatyki

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

Programowanie Niskopoziomowe

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

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

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

Architektura komputerów Wykład 2

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

Projektowanie. Projektowanie mikroprocesorów

Adam Kotynia, Łukasz Kowalczyk

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

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

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Wstęp do informatyki- wykład 2

Różności w C++ Marek Pudełko

Wstęp do programowania

Technika mikroprocesorowa I Wykład 2

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

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

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

2. Architektura mikrokontrolerów PIC16F8x... 13

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

Rok akademicki: 2013/2014 Kod: EEL s Punkty ECTS: 2. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Jerzy Nawrocki, Wprowadzenie do informatyki

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Programowalne układy logiczne

Metody Realizacji Języków Programowania

. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A

Języki formalne i techniki translacji

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

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

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

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

Podstawy Techniki Mikroprocesorowej

Naturalny kod binarny (NKB)

Cyfrowy zapis informacji. 5 grudnia 2013 Wojciech Kucewicz 2

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Ćwiczenie 3. Konwersja liczb binarnych

Architektura systemów komputerowych. Lista instrukcji procesora

Wstęp do informatyki- wykład 1 Systemy liczbowe

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

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

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

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

dr inż. Rafał Klaus Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia i ich zastosowań w przemyśle" POKL

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

KARTA PRZEDMIOTU. Architektura Komputerów C4

Transkrypt:

Magistrala systemowa Jerzy Nawrocki, Jerzy Nawrocki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Cel wykładu Asembler i koncepcja von Neumanna Wprowadzenie do programowania na poziomie języka asemblera Przedstawienie koncepcji von Neumanna Asembler i koncepcja von Neumanna () Plan wykładu Organizacja komputera IBM PC Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Mikroprocesor Pamięć Urządzenie wejścia-wyjścia Urządzenie wejścia-wyjścia Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Architektura typowego procesora Rejestr -bitowy Układ sterowania Licznik instr. Jednostka arytmetycznologiczna Rejestr Rejestr Rejestr Rejestr Słowo stanu Rozkaz pamiętania Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna

Jerzy Nawrocki, Prosty program - Rejestry Prosty program Instrukcja AX BX CX 7 DX SI 8 DI int,,, dx, si, di; ADD p, z = + + ; add, add, p = p + z; Asembler i koncepcja von Neumanna (7) Asembler i koncepcja von Neumanna (8) Sumator -bitowy Prosty program Instrukcja A B C C A B C A B C A B p = p + z; Sumator Sumator Sumator Półsumator = + + ; C C C C add, S S S S add, Asembler i koncepcja von Neumanna (9) Asembler i koncepcja von Neumanna () Struktura najprostszego programu Przykład programu Dlaczego tak? Czasami najwięcej rzucają cienia właśnie wyjaśnienia. code segment assume cs: code instrukcje code ends Asembler i koncepcja von Neumanna () = + + ; prog segment assume cs: prog add, add, int prog ends Koniec pracy Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna

Jerzy Nawrocki, Kompilacja pierwszy krok Uproszczony schemat kompilacji Zapisz program w pliku prog.asm prog.obj prog.asm MASM LINK prog.exe prog.lst Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Kompilacja MASM Uproszczony schemat kompilacji Polecenie prog.obj prog.asm MASM LINK prog.exe prog.lst Błędy Ostrzeżenia Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Kompilacja Listing kompilacji Uproszczony schemat kompilacji prog.lst prog.obj prog.asm MASM LINK prog.exe prog.lst Numer wiersza Adres względny Kod przekładu Tekst programu Asembler i koncepcja von Neumanna (7) Asembler i koncepcja von Neumanna (8) Asembler i koncepcja von Neumanna

Jerzy Nawrocki, Kompilacja LINK Uruchomienie programu DEBUG Polecenie Nieistotne ostrzeżenie Asembler i koncepcja von Neumanna (9) Asembler i koncepcja von Neumanna () Plan wykładu DEBUG Najważniejsze komendy Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne R rejestr G Q (Register) (Go) (Quit) Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Tekst programu raz jeszcze prog segment assume cs: prog add, add, int prog ends Asembler i koncepcja von Neumanna () DEBUG - przykład sesji -r AX : -r BX : -r Wynik CX : -g AX= BX= CX= DX= SP= DS=98C ES=98C SS=99C CS=99C IP= 99C: CC INT -q Nast. instrukcja Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna

Jerzy Nawrocki, Częściowe podsumowanie DEBUG - inna sesja Hura! Ale to proste! Umiemy już: napisać program, skompilować go, uruchomić. Dziwne! + + = 8 czy? Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Plan wykładu Arytmetyka dziesiętna Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne * + * + * = + + Asembler i koncepcja von Neumanna (7) Asembler i koncepcja von Neumanna (8) Arytmetyka binarna Arytmetyka heksadecymalna Aha! * + * + * = 8 = + + = * + * = + = 8 Asembler i koncepcja von Neumanna (9) Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna

Jerzy Nawrocki, Arytmetyka heksadecymalna Cyfry Arytmetyka heksadecymalna Cyfry do 9 A B C D E F BAD * + * + * = 8 + + = 989 Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Dodawanie metodą pośrednią Dodawanie metodą bezpośrednią 8F + 7F * + 8* + * + 7* + + 89 E * + * + 8F + 7F E F + F = + = : = reszta = reszta E Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Dodawanie metodą bezpośrednią Dodawanie metodą bezpośrednią 8F + 7F E + 8 + 7 = = : = reszta = reszta 8F + 7F E + + = = : = reszta = reszta Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna

Jerzy Nawrocki, Sprawdzenie za pomocą programu = + + ; Sprawdzenie za pomocą programu = + + ; 8F + 7F E Nie można prościej? Asembler i koncepcja von Neumanna (7) Asembler i koncepcja von Neumanna (8) Arytmetyka heksadecymalna Arytmetyka heksadecymalna = + ; = + ; move MOV c, z c = z; prog segment assume cs: prog mov, add, int prog ends 8F + 7F E Asembler i koncepcja von Neumanna (9) Asembler i koncepcja von Neumanna () Instrukcja MOV Poziom rejestrów Arytmetyka heksadecymalna = ; Rozkaz pamiętania subtract SUB c, z c = c z; prog segment assume cs: prog mov, sub, int prog ends Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna 7

Jerzy Nawrocki, Arytmetyka heksadecymalna Instrukcja SUB = ; = ; A czy można tak? prog segment assume cs: prog sub, mov, int prog ends mov, sub, int? sub, mov, int Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Instrukcja SUB Plan wykładu = ; mov, sub, int? sub, mov, int? Unikaj niekontrolowanych efektów ubocznych! Asembler i koncepcja von Neumanna () Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Asembler i koncepcja von Neumanna () Liczby ujemne bity Liczby ujemne bity = = if (a< && b>=) if (abs(a) > abs(b)) { ResultAbs= abs(a) abs(b); ResultSign=Ujemny;... Asembler i koncepcja von Neumanna (7) b 8 7 7 8 9 b<= b = Code(b) 8 b<= Code(b) = 8 + b Code(b) Asembler i koncepcja von Neumanna (8) Asembler i koncepcja von Neumanna 8

Jerzy Nawrocki, Liczby ujemne bity Liczby ujemne bity b 8 7 b 8 7 7 8 9 Code(b) 7 8 9 Code(b) b<= b = Code(b) b<= Code(b) = b b<= b = n Code(b) b<= Code(b) = n b Asembler i koncepcja von Neumanna (9) Asembler i koncepcja von Neumanna () Uzupełnienie do Liczby ujemne bity b jeśli b Code (b) = n - b jeśli b < n bitów daje przedział: [- n-, n- - ] Liczba Kod - 7 - - - - b Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Liczby ujemne bitów Negacja algebraiczna (zmiana znaku liczby) FFFF + = - + 77 7FFF...... - FFFF...... -77 8-78 8 - -7 7. Zaneguj bity (, ). Dodaj FFFF = - F E D C B A 9 7 8 F - cyfra Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna 9

Jerzy Nawrocki, Negacja algebraiczna (zmiana znaku liczby) Negacja algebraiczna (zmiana znaku liczby) = - ; F. Zaneguj bity (, ). Dodaj FFFD FFFE = - E D C B A 9 7 8 F - cyfra negation NEG c c = -c; prog segment assume cs: prog neg int prog ends Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Negacja algebraiczna (zmiana znaku liczby) Plan wykładu = - ; Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Asembler i koncepcja von Neumanna (7) Asembler i koncepcja von Neumanna (8) - Problem John Luis von Neumann Ur.: 8..9 w Budapeszcie Zm.: 8.7.97 w Waszyngtonie 9: Princeton University 9: Institute for Advanced Studies Specjalizowane kalkulatory (obliczanie toru pocisku) a uniwersalne komputery Asembler i koncepcja von Neumanna (9) Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna

Jerzy Nawrocki, Prosty program Sumator -bitowy A B A B A B A B = + + ; add, Sumator C Sumator C Sumator C Półsumator add, C C C C S S S S Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Program jako dane przechowywane w pamięci Dwie fazy:. Ściąganie rozkazu i jego dekodowanie. Wykonanie rozkazu Specjalny rejestr (licznik rozkazów) pokazuje następny rozkaz do wykonania. Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Przykładowe kody rozkazów = ; Kod Rozkaz Przykład MovRegCon(R, C) R MovRegReg(Rd, Rs) R R AddRegReg(Rd, Rs) R R+R SubRegReg(Rd, Rs) R R R NegReg(R) R - R Int(C) prog segment assume cs: prog mov, sub, int prog ends Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna () Asembler i koncepcja von Neumanna

Jerzy Nawrocki, = ; = ; Licznik rozkazów Int 8 MovRegReg SubRegReg. Ściągnięcie rozkazu z pamięci Licznik rozkazów Int 8 MovRegReg SubRegReg a. Ustawienie licznika na następny rozkaz Asembler i koncepcja von Neumanna (7) Asembler i koncepcja von Neumanna (8) = ; = ; Licznik rozkazów Int 8 MovRegReg SubRegReg. Wykonanie rozkazu Licznik rozkazów Int 8 MovRegReg SubRegReg. Ściągnięcie rozkazu z pamięci Asembler i koncepcja von Neumanna (9) Asembler i koncepcja von Neumanna (7) = ; = ; Licznik rozkazów Int 8 MovRegReg SubRegReg a. Ustawienie licznika na następny rozkaz Licznik rozkazów Int 8 MovRegReg SubRegReg. Wykonanie rozkazu Asembler i koncepcja von Neumanna (7) Asembler i koncepcja von Neumanna (7) Asembler i koncepcja von Neumanna

Jerzy Nawrocki, Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Skoki warunkowe PSW... SF ZF... CoMPare CMP c, z Jump if Less or Equal JLE e... e: if (c > z) {... Asembler i koncepcja von Neumanna (7) Asembler i koncepcja von Neumanna (7) Skoki warunkowe - przykład Skoki warunkowe - przykład = min {, ; = min {, ; = ; if ( > ) { = ; mov, cmp, jle ok mov, ok: int = ; if ( > ) { = ; Asembler i koncepcja von Neumanna (7) Asembler i koncepcja von Neumanna (7) Skoki warunkowe Skok bezwarunkowy pocz: jump if equal JE e if (c!= z)... jump if not equal JNE e if (c == z)... jump if not less JNL e if (c < z)... jump if greater JG e if (c <= z)... CMP c, z JNE kon... while (c == z) {... Tak c = z... Nie jump if less JL e if (c >= z)... jump JMP pocz kon: Asembler i koncepcja von Neumanna (77) Asembler i koncepcja von Neumanna (78) Asembler i koncepcja von Neumanna

Jerzy Nawrocki, CMP c, z JNG els ins JMP kon els: ins kon: Skok bezwarunkowy if (c > z) { c = z Tak Nie ins ins ins else { ins Asembler i koncepcja von Neumanna (79) Tak > Tak =- Skok bezwarunkowy - przykład = nwd (, ); while (!= ) Nie { if ( > ){ Nie -= ; else{ =- -= ; Asembler i koncepcja von Neumanna (8) Skok bezwarunkowy - przykład whi: cmp, je kon jle els sub, jmp od els: sub, od: jmp whi kon: int = nwd (, ); while (!= ) { if ( > ){ -= ; else{ -= ; Asembler i koncepcja von Neumanna (8) Podsumowanie Podsumowanie Asembler i koncepcja von Neumanna (8) Podsumowanie Literatura Rejestr - rodzaj zmiennej DEBUG - interfejs z użytkownikiem Reprezentacja heksadecymalna Podstawowe instrukcje arytmetyki liczb całkowitych Instrukcje skoku Pisanie programów w języku asemblera jest trudniejsze niż w języku wysokiego poziomu Asembler i koncepcja von Neumanna (8) J.Nawrocki, Programowanie komputerów IBM PC w języku asemblera metodą systematyczną, WPP, 99. Asembler i koncepcja von Neumanna (8) Asembler i koncepcja von Neumanna