Asembler i koncepcja von Neumanna

Slides:



Advertisements
Podobne prezentacje
Wprowadzenie do informatyki Wykład 6
Advertisements

Imperatywne modele obliczeń Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Wykład 3: Jak działa typowy mikroprocesor?
Mikroprocesory i procesory sygnałowe
Język asemblera Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
PROGRAMOWANIE STRUKTURALNE
CPU.
Alokacja pamięci struct Test {char c; int n; double x; } st1; st1 cnxcnx
ARCHITEKTURA KOMPUTERÓW definicja komputera PROCESOR PAMIĘĆ OPERACYJNA URZĄDZENIA ZEWNĘTRZNE.
Przetwarzanie tekstów i AWK Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Rekurencja Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Rozmieszczanie zadań czasu rzeczywistego w pamięci notatnikowej
Imperatywne modele obliczeń Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do.
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Procesy współbieżne Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Wprowadzenie do informatyki Wykład 5
Przetwarzanie tekstów i AWK Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do.
Zarządzanie konfiguracją Doskonalenie Procesów Programowych Wykład 6 Copyright, 2001 © Jerzy.
Budowa komputera Wstęp do informatyki Wykład 15
Testy akceptacyjne Analiza systemów informatycznych Wykład 9
Rekurencja Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Team Building Copyright, 2003 © Jerzy R. Nawrocki Requirements Engineering Lecture.
Imperatywne modele obliczeń Copyright, 2003 © Jerzy R. Nawrocki Teoretyczne podstawy.
Metody numeryczne Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Bazy danych Wprowadzenie do informatyki Wykład 9
Programowanie imperatywne i granice obliczalności Copyright, 2004 © Jerzy R. Nawrocki
Rekursja Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Język asemblera i koncepcja von Neumanna
Przetwarzanie tekstów i AWK
Programowanie imperatywne i język C
Języki formalne i gramatyki
Budowa komputera Wstęp do informatyki Wykład 6 IBM PC XT (1983)
Procesy współbieżne Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki.
Informatyka jako dziedzina wiedzy Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
Asembler i koncepcja von Neumanna Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki Wykład 5
Od algebry Boole’a do komputera
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
Przetwarzanie tekstów i AWK Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 7
Metody formalne Copyright, 2005 © Jerzy R. Nawrocki Analiza systemów informatycznych.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Język C – Część II Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Wyrażenia regularne i język AWK
Komunikacja poprzez Internet
Dokumenty i prezentacje Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do.
Wprowadzenie do informatyki Wykład 5
Mikroprocesory i procesory sygnałowe
Programowanie imperatywne i język C Copyright, 2006 © Jerzy R. Nawrocki Wstęp do.
Przetwarzanie tekstu i strony WWW Copyright, 1999 © Jerzy R. Nawrocki Wprowadzenie.
Modele obliczeń i granice obliczalności Copyright, 1999 © Jerzy R. Nawrocki Wprowadzenie.
Informatyka I Wykład 4 Stałe Stałe liczbowe Stałe znakowe Stałe tekstowe Jerzy Kotowski Politechnika Wroclawska var = 5L - 0xA; -5.
Translatory Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 11.
Gramatyki i translatory
Procesy współbieżne Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki.
Dokumenty elektroniczne Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie do.
Budowa komputera Wstęp do informatyki Wykład 6 IBM PC XT (1983)
Przetwarzanie tekstów i AWK Copyright, 2007 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 5
Języki formalne i gramatyki Copyright, 2005 © Jerzy R. Nawrocki Teoretyczne podstawy.
Języki formalne Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Wprowadzenie do teoretycznych podstaw informatyki Copyright, 2004 © Jerzy R. Nawrocki
Od algebry Boole’a do komputera Copyright, 2007 © Jerzy R. Nawrocki Wprowadzenie.
Procesy współbieżne Copyright, 2006 © Jerzy R. Nawrocki Wstęp do informatyki Wykład.
Asembler i koncepcja von Neumanna Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki Wykład 5
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Procesy współbieżne Copyright, 2007 © Jerzy R. Nawrocki Wstęp do informatyki Wykład.
Wyrażenia regularne i język AWK Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne.
Lista Rozkazów: Język komputera Większość slajdów do tego wykładu to tłumaczenia i przeróbki oficjalnych sladjów do podręcznika Pattersona i Hennessy’ego.
Zapis prezentacji:

Asembler i koncepcja von Neumanna (c) Jerzy Nawrocki Wykład 4 Wprowadzenie do informatyki Wykład 6 Asembler i koncepcja von Neumanna Jerzy.Nawrocki@put.poznan.pl http://www.cs.put.poznan.pl/jnawrocki/wsb-wdi/ Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki

J.Nawrocki, Asembler i koncepcja von Neumanna Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Koncepcja von Neumanna Rozkazy skoku J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Prosty program Rejestry AX 3 BX CX 7 DX 1 SI 8 DI 2 C int ax, bx, cx, dx, si, di; J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Prosty program Instrukcja C ADD p, z p = p + z ax = ax + bx + 2 add ax, bx add ax, 2 J.Nawrocki, Asembler i koncepcja von Neumanna

Struktura najprostszego programu Prosty program Struktura najprostszego programu Czasami najwięcej rzucają cienia właśnie wyjaśnienia. Dlaczego tak? code segment assume cs: code start: instrukcje code ends end start J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Prosty program Przykład programu ax = ax + bx + cx prog segment assume cs: prog start: add ax, bx add ax, cx int 3 prog ends end start Koniec pracy J.Nawrocki, Asembler i koncepcja von Neumanna

Kompilacja – pierwszy krok Zapisz program w pliku prog.asm Prosty program Kompilacja – pierwszy krok Zapisz program w pliku prog.asm J.Nawrocki, Asembler i koncepcja von Neumanna

Uproszczony schemat kompilacji Prosty program Uproszczony schemat kompilacji prog.obj MASM LINK prog.exe prog.asm prog.lst J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Prosty program Kompilacja - MASM Polecenie Błędy Ostrzeżenia J.Nawrocki, Asembler i koncepcja von Neumanna

Kompilacja – Listing kompilacji Prosty program Kompilacja – Listing kompilacji prog.lst Numer wiersza Adres względny Tekst programu Kod przekładu J.Nawrocki, Asembler i koncepcja von Neumanna

Nieistotne ostrzeżenie Prosty program Kompilacja - LINK Polecenie Nieistotne ostrzeżenie J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Prosty program Uruchomienie - DEBUG J.Nawrocki, Asembler i koncepcja von Neumanna

Najważniejsze komendy DEBUG Najważniejsze komendy R rejestr (Register) G (Go) Q (Quit) J.Nawrocki, Asembler i koncepcja von Neumanna

Tekst programu raz jeszcze prog segment assume cs: prog start: add ax, bx add ax, cx int 3 prog ends end start J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna DEBUG - przykład sesji - rax AX 0000 : 1 - rbx BX 0000 2 : Wynik - rcx CX 0005 : 3 - g AX=0006 BX=0002 CX=0003 DX=0000 SP=0000 DS=198C ES=198C SS=199C CS=199C IP=0004 199C:0004 CC INT 3 - q Nast. instrukcja J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna DEBUG - przykład sesji MS DOS DEBUG MS DOS J.Nawrocki, Asembler i koncepcja von Neumanna

Częściowe podsumowanie Hura! Ale to proste! Umiemy już: napisać program, skompilować go, uruchomić. J.Nawrocki, Asembler i koncepcja von Neumanna

Arytmetyka heksadecymalna Cyfry 0 do 9 A 10 B 11 C 12 D 13 E 14 F 15 J.Nawrocki, Asembler i koncepcja von Neumanna

Arytmetyka heksadecymalna System dziesiętny 12310 1*102 + 2* 101 + 3* 100 = 100 + 20 + 3 J.Nawrocki, Asembler i koncepcja von Neumanna

Arytmetyka heksadecymalna System szesnastkowy 12316 1*162 + 2* 161 + 3* 160 = 256 + 32 + 3 = 29110 1216 = 1*161 + 2*160 = 16 + 2 = 1810 J.Nawrocki, Asembler i koncepcja von Neumanna

Arytmetyka heksadecymalna Dodawanie metodą pośrednią 28F16 + 37F16 + 155010 11 2*256 + 8*16 + 15 65510 3*256 + 7*16 + 15 89510 60E16 6*256 + 0*16 + 14 J.Nawrocki, Asembler i koncepcja von Neumanna

Arytmetyka heksadecymalna Dodawanie metodą bezpośrednią F16 + F16 = 1510 + 1510= 3010 3010 : 1610 = 1 reszta 1410= 1 reszta E16 1 28F + 37F E J.Nawrocki, Asembler i koncepcja von Neumanna

Arytmetyka heksadecymalna Dodawanie metodą bezpośrednią 1 + 816 + 716 = = 1610 1610 : 1610 = 1 reszta 010= 1 reszta 016 11 28F + 37F 0E J.Nawrocki, Asembler i koncepcja von Neumanna

Arytmetyka heksadecymalna Dodawanie metodą bezpośrednią 1 + 216 + 316 = = 610 610 : 1610 = 0 reszta 610= 0 reszta 616 011 28F + 37F 60E J.Nawrocki, Asembler i koncepcja von Neumanna

Arytmetyka heksadecymalna ax = bx + cx prog segment assume cs: prog start: mov ax, bx add ax, cx int 3 prog ends end start MOV c, z move c = z C J.Nawrocki, Asembler i koncepcja von Neumanna

Arytmetyka heksadecymalna ax= bx + cx 011 28F + 37F 60E J.Nawrocki, Asembler i koncepcja von Neumanna

Arytmetyka heksadecymalna ax = bx - cx prog segment assume cs: prog start: mov ax, bx sub ax, cx int 3 prog ends end start subtract SUB c, z C c = c - z J.Nawrocki, Asembler i koncepcja von Neumanna

Arytmetyka heksadecymalna ax = bx - cx A czy można tak? prog segment assume cs: prog start: sub bx, cx mov ax, bx int 3 prog ends end start J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Liczby ujemne Uzupełnienie do 2 b jeśli b  0 2n - |b| jeśli b < 0 kod (b) = n bitów daje przedział: [-2n-1 , 2n-1 - 1] J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Liczby ujemne 4 bity kod(b) 15 b 7 J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Liczby ujemne 3 bity 3 3 2 2 1 1 0 0 -1 7 -2 6 -3 5 -4 4 Liczba Kod 23 - |b| J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Liczby ujemne 16 bitów 32767 7FFF ... ... 1 1 0 0 -1 FFFF -32767 8001 -32768 8000 1111 FFFF + 2 0001 -1 + 2 1 = J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Liczby ujemne ax= bx + cx 1111 FFFF + 2 0001 J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Liczby ujemne Zmiana znaku 5  -5 -7  7 0  F 1  E 2  D 3  C 4  B 5  A 6  9 7  8 F - cyfra 1. Zaneguj bity (0 1, 1 0) 2. Dodaj 1 FFFF = -1 0000 0001 J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Liczby ujemne Zmiana znaku 0  F 1  E 2  D 3  C 4  B 5  A 6  9 7  8 1. Zaneguj bity (0 1, 1 0) 2. Dodaj 1 F - cyfra 0002 FFFD FFFE = -2 J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Liczby ujemne ax = - ax prog segment assume cs: prog start: neg ax int 3 prog ends end start NEG c negation C c = -c J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Liczby ujemne ax = - ax J.Nawrocki, Asembler i koncepcja von Neumanna

Koncepcja von Neumanna John Luis von Neumann Ur.: 28.12.1903 w Budapeszcie Zm.: 8.07.1957 w Waszyngtonie 1930: Princeton University 1933: Institute for Advanced Studies J.Nawrocki, Asembler i koncepcja von Neumanna

Koncepcja von Neumanna Dwie fazy: 1. Ściąganie rozkazu i jego dekodowanie 2. Wykonanie rozkazu Specjalny rejestr (licznik rozkazów) pokazuje następny rozkaz do wykonania. J.Nawrocki, Asembler i koncepcja von Neumanna

Koncepcja von Neumanna Przykładowe kody rozkazów Kod Rozkaz Przykład 1 MovRegCon(R, C) 1 1 1 R1  1 2 MovRegReg(Rd, Rs) 2 2 1 R2  R1 3 AddRegReg(Rd, Rs) 3 1 2 R1  R1+R2 4 SubRegReg(Rd, Rs) 4 2 1 R2  R2–R1 5 NegReg(R) 5 2 R2  - R2 6 Int(C) 6 3 J.Nawrocki, Asembler i koncepcja von Neumanna

Koncepcja von Neumanna ax = bx - cx prog segment assume cs: prog start: mov ax, bx sub ax, cx int 3 prog ends end start 2 0 1 4 0 2 6 3 J.Nawrocki, Asembler i koncepcja von Neumanna

Koncepcja von Neumanna ax = bx - cx 10 2 MovRegReg ax ax bx cx 1 bx 5 3 13 4 SubRegReg ax 10 2 cx 16 6 Int Licznik rozkazów 3 1. Ściągnięcie rozkazu z pamięci 18 J.Nawrocki, Asembler i koncepcja von Neumanna

Koncepcja von Neumanna ax = bx - cx 10 2 MovRegReg ax ax bx cx 1 bx 5 3 13 4 SubRegReg ax 13 2 cx 16 6 Int Licznik rozkazów 3 1a. Ustawienie licznika na następny rozkaz 18 J.Nawrocki, Asembler i koncepcja von Neumanna

Koncepcja von Neumanna ax = bx - cx 10 2 MovRegReg ax ax bx cx 1 bx 5 3 13 4 SubRegReg ax 5 13 2 cx 16 6 Int Licznik rozkazów 3 2. Wykonanie rozkazu 18 J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Rozkazy skoku Skoki warunkowe SF ZF . . . PSW C CoMPare CMP c, z JLE e . . . e: if (c > z) { . . . } Jump if Less or Equal J.Nawrocki, Asembler i koncepcja von Neumanna

Skoki warunkowe - przykład Rozkazy skoku Skoki warunkowe - przykład ax = min {bx, cx} mov ax, bx cmp ax, cx jle ok mov ax, cx ok: int 3 ax = bx; if (ax > cx) { ax = cx; } J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Rozkazy skoku Skoki warunkowe C jump if equal JE e if (c != z) ... jump if not greater JNE e if (c == z) ... jump if not less JNL e if (c < z) ... jump if greater JG e if (c <= z) ... jump if less JL e if (c >= z) ... J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Rozkazy skoku Skok bezwarunkowy C pocz: CMP c, z JNE kon . . . JMP pocz kon: while (c == z) { . . . } c = z . . . Tak Nie jump J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Rozkazy skoku Skok bezwarunkowy C CMP c, z JNL els ins1 JMP kon els: ins2 kon: if (c > z) { ins1 } else { ins2 } c = z ins1 Tak Nie ins2 J.Nawrocki, Asembler i koncepcja von Neumanna

Skok bezwarunkowy - przykład Rozkazy skoku Skok bezwarunkowy - przykład ax = nwd {ax, bx} ax  bx ax > bx ax=ax-bx bx=bx-ax Tak Nie while (ax != bx) { if (ax > bx){ ax-= bx; }else{ bx-= ax; } J.Nawrocki, Asembler i koncepcja von Neumanna

Skok bezwarunkowy - przykład Rozkazy skoku Skok bezwarunkowy - przykład ax := nwd {ax, bx} whi: cmp ax, bx je kon jle els sub ax, bx jmp od els: sub bx, ax od: jmp whi kon: int 3 while (ax != bx) { if (ax > bx){ ax-= bx; }else{ bx-= ax; } J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Podsumowanie Rejestr - rodzaj zmiennej DEBUG - interfejs z użytkownikiem Reprezentacja heksadecymalna Pisanie programów w języku asemblera jest trudniejsze niż w języku wysokiego poziomu Wreszcie! J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Literatura J.Nawrocki, Programowanie komputerów IBM PC w języku asemblera metodą systematyczną, WPP, 1991.  J.Nawrocki, Asembler i koncepcja von Neumanna

J.Nawrocki, Asembler i koncepcja von Neumanna Ocena wykładu 1. Wrażenie ogólne? (1 - 6) 2. Zbyt wolno czy zbyt szybko? 3. Czy dowiedziałeś się czegoś ważnego? 4. Co poprawić i jak? J.Nawrocki, Asembler i koncepcja von Neumanna