Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Język asemblera i koncepcja von Neumanna Copyright, 2003 © Jerzy R. Nawrocki Wprowadzenie.

Podobne prezentacje


Prezentacja na temat: "Język asemblera i koncepcja von Neumanna Copyright, 2003 © Jerzy R. Nawrocki Wprowadzenie."— Zapis prezentacji:

1 Język asemblera i koncepcja von Neumanna Copyright, 2003 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 3

2 J.Nawrocki, TPI, Język asemblera i.. Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Koncepcja von Neumanna Rozkazy skoku

3 J.Nawrocki, TPI, Język asemblera i.. Prosty program Rejestry var ax, bx, cx, dx, si, di: integer; var ax, bx, cx, dx, si, di: integer; AX 3 BX 0 CX 7 DX 1 SI 8 DI 2

4 J.Nawrocki, TPI, Język asemblera i.. Prosty program Instrukcja p := p + z ADD p, z ax := ax + bx + 2 add ax, bx add ax, 2

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

6 J.Nawrocki, TPI, Język asemblera i.. Prosty program Przykład programu prog segment assume cs: prog start: add ax, bx add ax, cx int 3 prog ends end start ax := ax + bx + cx Koniec pracy

7 J.Nawrocki, TPI, Język asemblera i.. Prosty program Kompilacja – pierwszy krok Zapisz program w pliku prog.asm

8 J.Nawrocki, TPI, Język asemblera i.. Prosty program Uproszczony schemat kompilacji MASMLINK prog.obj prog.exe prog.asmprog.lst

9 J.Nawrocki, TPI, Język asemblera i.. Prosty program Kompilacja - MASM Polecenie Błędy Ostrzeżenia

10 J.Nawrocki, TPI, Język asemblera i.. Prosty program Kompilacja – Listing kompilacji Numer wiersza Tekst programu Kod przekładu Adres względny prog.lst

11 J.Nawrocki, TPI, Język asemblera i.. Prosty program Kompilacja - LINK Nieistotne ostrzeżenie Polecenie

12 J.Nawrocki, TPI, Język asemblera i.. Prosty program Uruchomienie - DEBUG

13 J.Nawrocki, TPI, Język asemblera i.. Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Koncepcja von Neumanna Rozkazy skoku

14 J.Nawrocki, TPI, Język asemblera i.. DEBUG Najważniejsze komendy R rejestr (Register) G (Go) Q (Quit)

15 J.Nawrocki, TPI, Język asemblera i.. Tekst programu raz jeszcze prog segment assume cs: prog start: add ax, bx add ax, cx int 3 prog ends end start

16 J.Nawrocki, TPI, Język asemblera i.. DEBUG - przykład sesji Wynik - rax AX rbx BX rcx CX : : : - g AX=0006 BX=0002 CX=0003 DX=0000 SP=0000 DS=198C ES=198C SS=199C CS=199C IP= C:0004 CC INT 3 - q Nast. instrukcja

17 J.Nawrocki, TPI, Język asemblera i.. DEBUG - przykład sesji DEBUG MS DOS

18 J.Nawrocki, TPI, Język asemblera i.. Częściowe podsumowanie Umiemy już: napisać program, skompilować go, uruchomić. Hura! Ale to proste!

19 J.Nawrocki, TPI, Język asemblera i.. DEBUG - inna sesja = 18 czy 12? Dziwne !

20 J.Nawrocki, TPI, Język asemblera i.. Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Koncepcja von Neumanna Rozkazy skoku

21 J.Nawrocki, TPI, Język asemblera i.. Arytmetyka heksadecymalna System szesnastkowy = = * * * = 1* *16 0 = = 18 10

22 J.Nawrocki, TPI, Język asemblera i.. Arytmetyka heksadecymalna Dodawanie metodą pośrednią 28F F 16 28F F * * * * * * E 16

23 J.Nawrocki, TPI, Język asemblera i.. Arytmetyka heksadecymalna Dodawanie metodą bezpośrednią 1 28 F + 37 F E 1 28 F + 37 F E F 16 + F 16 = = : = 1 reszta = 1 reszta E 16

24 J.Nawrocki, TPI, Język asemblera i.. Arytmetyka heksadecymalna Dodawanie metodą bezpośrednią F F 0E F F 0E = = : = 1 reszta 0 10 = 1 reszta 0 16

25 J.Nawrocki, TPI, Język asemblera i.. Arytmetyka heksadecymalna Dodawanie metodą bezpośrednią F + 3 7F 60E F + 3 7F 60E = = : = 0 reszta 6 10 = 0 reszta 6 16

26 J.Nawrocki, TPI, Język asemblera i.. Arytmetyka heksadecymalna ax:= ax + bx + cx F + 3 7F 60E F + 3 7F 60E

27 J.Nawrocki, TPI, Język asemblera i.. ax := bx + cx Arytmetyka heksadecymalna c := z MOV c, z move prog segment assume cs: prog start: mov ax, bx add ax, cx int 3 prog ends end start

28 J.Nawrocki, TPI, Język asemblera i.. Arytmetyka heksadecymalna ax:= bx + cx F + 3 7F 60E F + 3 7F 60E

29 J.Nawrocki, TPI, Język asemblera i.. ax := bx - cx Arytmetyka heksadecymalna c := c - z SUB c, z subtract prog segment assume cs: prog start: mov ax, bx sub ax, cx int 3 prog ends end start

30 J.Nawrocki, TPI, Język asemblera i.. Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Koncepcja von Neumanna Rozkazy skoku

31 J.Nawrocki, TPI, Język asemblera i.. Liczby ujemne Uzupełnienie do 2 b jeśli b 0 2 n - |b| jeśli b < 0 kod (b) = n bitów daje przedział: [-2 n-1, 2 n-1 - 1]

32 J.Nawrocki, TPI, Język asemblera i.. Liczby ujemne 4 bity 15 kod(b) b 7

33 J.Nawrocki, TPI, Język asemblera i.. Liczby ujemne 3 bity Liczba Kod |b|

34 J.Nawrocki, TPI, Język asemblera i.. Liczby ujemne 16 bitów 7FFF FFF FFFF -1 FFFF FFFF FFFF =

35 J.Nawrocki, TPI, Język asemblera i FFFF FFFF Liczby ujemne ax:= bx + cx

36 J.Nawrocki, TPI, Język asemblera i.. Zmiana znaku Liczby ujemne 1. Zaneguj bity (0 1, 1 0) 2. Dodaj 1 0 F 1 E 2 D 3 C 4 B 5 A FFFF = F - cyfra

37 J.Nawrocki, TPI, Język asemblera i.. ax := - ax Liczby ujemne c := -c NEG c negation prog segment assume cs: prog start: neg ax int 3 prog ends end start

38 J.Nawrocki, TPI, Język asemblera i.. Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Koncepcja von Neumanna Rozkazy skoku

39 J.Nawrocki, TPI, Język asemblera i.. Koncepcja von Neumanna Specjalizowane kalkulatory (obliczanie toru pocisku) a uniwersalne komputery Jak zrealizować uniwersalność: program jako łącznice kablowe program jako dane przechowywane w pamięci (koncepcja von Neumanna)

40 J.Nawrocki, TPI, Język asemblera i.. 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.

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

42 J.Nawrocki, TPI, Język asemblera i.. ax := bx - cx Koncepcja von Neumanna prog segment assume cs: prog start: mov ax, bx sub ax, cx int 3 prog ends end start

43 J.Nawrocki, TPI, Język asemblera i.. Koncepcja von Neumanna MovRegReg ax bx SubRegReg 3 16Int 18 axbx 10 Licznik rozkazów 50 ax cx cx 3 ax := bx - cx 1. Ściągnięcie rozkazu z pamięci

44 J.Nawrocki, TPI, Język asemblera i.. Koncepcja von Neumanna MovRegReg ax bx SubRegReg 3 16Int 18 axbx 13 Licznik rozkazów 50 ax cx cx 3 ax := bx - cx 5 1. Ściągnięcie rozkazu z pamięci

45 J.Nawrocki, TPI, Język asemblera i.. Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Koncepcja von Neumanna Rozkazy skoku

46 J.Nawrocki, TPI, Język asemblera i.. Skoki warunkowe Rozkazy skoku if c = z then begin... end; if c = z then begin... end; CMP c, z JNE e... e: compare jump if not equal SFZF... PSW

47 J.Nawrocki, TPI, Język asemblera i.. Skoki warunkowe Rozkazy skoku JE e jump if equal if c <> z then... JNL e jump if not less if c < z then... JG e jump if greater if c <= z then... JNG e jump if not greater if c > z then... JL e jump if less if c >= z then...

48 J.Nawrocki, TPI, Język asemblera i.. Skoki warunkowe - przykład Rozkazy skoku ax := min {bx, cx} mov ax, bx cmp ax, cx jle ok mov ax, cx ok: int 3 ax:= bx; if ax > cx then ax:= cx ax:= bx; if ax > cx then ax:= cx

49 J.Nawrocki, TPI, Język asemblera i.. Skok bezwarunkowy Rozkazy skoku while c = z do begin... end; while c = z do begin... end; pocz: CMP c, z JNE kon... JMP pocz kon: c = z... Tak Nie jump

50 J.Nawrocki, TPI, Język asemblera i.. Skok bezwarunkowy Rozkazy skoku if c = z then ins1 else ins2 if c = z then ins1 else ins2 CMP c, z JNE els ins1 JMP kon els: ins2 kon: c = z ins1 TakNie ins2

51 J.Nawrocki, TPI, Język asemblera i.. Skok bezwarunkowy - przykład Rozkazy skoku ax := nwd {ax, bx} while ax <> bx do begin if ax > bx then ax:= ax - bx else bx:= bx - ax end; while ax <> bx do begin if ax > bx then ax:= ax - bx else bx:= bx - ax end; ax bx ax > bx ax:=ax-bxbx:=bx-ax Tak Nie

52 J.Nawrocki, TPI, Język asemblera i.. Skok bezwarunkowy - przykład Rozkazy skoku 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 do begin if ax > bx then ax:= ax - bx else bx:= bx - ax end; while ax <> bx do begin if ax > bx then ax:= ax - bx else bx:= bx - ax end;

53 J.Nawrocki, TPI, Język asemblera i.. 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!

54 J.Nawrocki, TPI, Język asemblera i.. Literatura J.Nawrocki, Programowanie komputerów IBM PC w języku asemblera metodą systematyczną, WPP, 1991.


Pobierz ppt "Język asemblera i koncepcja von Neumanna Copyright, 2003 © Jerzy R. Nawrocki Wprowadzenie."

Podobne prezentacje


Reklamy Google