Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Język asemblera Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki.

Podobne prezentacje


Prezentacja na temat: "Język asemblera Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki."— Zapis prezentacji:

1 Język asemblera Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 5

2 J.Nawrocki, Wprowadzenie.., Wykład 5 Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Koncepcja von Neumanna Rozkazy skoku

3 J.Nawrocki, Wprowadzenie.., Wykład 5 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, Wprowadzenie.., Wykład 5 Prosty program Instrukcja p := p + z ADD p, z ax := ax + bx + 2 add ax, bx add ax, 2

5 J.Nawrocki, Wprowadzenie.., Wykład 5 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, Wprowadzenie.., Wykład 5 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, Wprowadzenie.., Wykład 5 Prosty program Kompilacja – pierwszy krok Zapisz program w pliku prog.asm

8 J.Nawrocki, Wprowadzenie.., Wykład 5 Prosty program Uproszczony schemat kompilacji MASMLINK prog.obj prog.exe prog.asmprog.lst

9 J.Nawrocki, Wprowadzenie.., Wykład 5 Prosty program Kompilacja - MASM Polecenie Błędy Ostrzeżenia

10 J.Nawrocki, Wprowadzenie.., Wykład 5 Prosty program Kompilacja – Listing kompilacji Numer wiersza Tekst programu Kod przekładu Adres względny

11 J.Nawrocki, Wprowadzenie.., Wykład 5 Prosty program Kompilacja - LINK Nieistotne ostrzeżenie Polecenie

12 J.Nawrocki, Wprowadzenie.., Wykład 5 Prosty program Uruchomienie - DEBUG

13 J.Nawrocki, Wprowadzenie.., Wykład 5 Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Koncepcja von Neumanna Rozkazy skoku

14 J.Nawrocki, Wprowadzenie.., Wykład 5 DEBUG Najważniejsze komendy R rejestr (Register) G (Go) Q (Quit)

15 J.Nawrocki, Wprowadzenie.., Wykład 5 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

16 J.Nawrocki, Wprowadzenie.., Wykład 5 DEBUG - przykład sesji DEBUG MS DOS

17 J.Nawrocki, Wprowadzenie.., Wykład 5 Częściowe podsumowanie Umiemy już: napisać program, skompilować go, uruchomić. Hura! Ale to proste!

18 J.Nawrocki, Wprowadzenie.., Wykład 5 DEBUG - inna sesja = 18 czy 12? Dziwne !

19 J.Nawrocki, Wprowadzenie.., Wykład 5 Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Koncepcja von Neumanna Rozkazy skoku

20 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Cyfry 0 do 9 A 10 B 11 C 12 D 13 E 14 F 15

21 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna System dziesiętny = * * *10 2 +

22 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna System szesnastkowy = = * * * = 1* *16 0 = = 18 10

23 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna = Aha!

24 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie metodą pośrednią 28F F 16 28F F * * * * * * E 16

25 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie metodą bezpośrednią 28F + 37F 28F + 37F

26 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie metodą bezpośrednią 28 F + 37 F 28 F + 37 F F 16 + F 16 = = : = 1 reszta = 1 reszta E 16

27 J.Nawrocki, Wprowadzenie.., Wykład 5 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

28 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie metodą bezpośrednią F F E F F E

29 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie metodą bezpośrednią F F E F F E = = : = 1 reszta 0 10 = 1 reszta 0 16

30 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie metodą bezpośrednią F F 0E F F 0E = = : = 1 reszta 0 10 = 1 reszta 0 16

31 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie metodą bezpośrednią F F 0E F F 0E

32 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie metodą bezpośrednią F + 3 7F 0E F + 3 7F 0E = = : = 0 reszta 6 10 = 0 reszta 6 16

33 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie metodą bezpośrednią F + 3 7F 60E F + 3 7F 60E = = : = 0 reszta 6 10 = 0 reszta 6 16

34 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie metodą bezpośrednią F + 3 7F 60E F + 3 7F 60E

35 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna ax:= ax + bx + cx F + 3 7F 60E F + 3 7F 60E

36 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna ax:= ax + bx + cx Nie można prościej ?

37 J.Nawrocki, Wprowadzenie.., Wykład 5 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

38 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna ax:= bx + cx F + 3 7F 60E F + 3 7F 60E

39 J.Nawrocki, Wprowadzenie.., Wykład 5 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

40 J.Nawrocki, Wprowadzenie.., Wykład 5 ax := bx - cx Arytmetyka heksadecymalna prog segment assume cs: prog start: sub bx, cx mov ax, bx int 3 prog ends end start A czy można tak?

41 J.Nawrocki, Wprowadzenie.., Wykład 5 Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Koncepcja von Neumanna Rozkazy skoku

42 J.Nawrocki, Wprowadzenie.., Wykład 5 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]

43 J.Nawrocki, Wprowadzenie.., Wykład 5 Liczby ujemne 4 bity 15 kod(b) b 7

44 J.Nawrocki, Wprowadzenie.., Wykład 5 Liczby ujemne 3 bity Liczba Kod |b|

45 J.Nawrocki, Wprowadzenie.., Wykład 5 Liczby ujemne 16 bitów 7FFF FFF FFFF -1 FFFF FFFF FFFF =

46 J.Nawrocki, Wprowadzenie.., Wykład FFFF FFFF Liczby ujemne ax:= bx + cx

47 J.Nawrocki, Wprowadzenie.., Wykład 5 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

48 J.Nawrocki, Wprowadzenie.., Wykład 5 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 = -2 FFFD FFFE F - cyfra

49 J.Nawrocki, Wprowadzenie.., Wykład 5 ax := - ax Liczby ujemne c := -c NEG c negation prog segment assume cs: prog start: neg ax int 3 prog ends end start

50 J.Nawrocki, Wprowadzenie.., Wykład 5 ax := - ax Liczby ujemne

51 J.Nawrocki, Wprowadzenie.., Wykład 5 Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Koncepcja von Neumanna Rozkazy skoku

52 J.Nawrocki, Wprowadzenie.., Wykład 5 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)

53 J.Nawrocki, Wprowadzenie.., Wykład 5 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.

54 J.Nawrocki, Wprowadzenie.., Wykład 5 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

55 J.Nawrocki, Wprowadzenie.., Wykład 5 ax := bx - cx Koncepcja von Neumanna prog segment assume cs: prog start: mov ax, bx sub ax, cx int 3 prog ends end start

56 J.Nawrocki, Wprowadzenie.., Wykład 5 Koncepcja von Neumanna MovRegReg ax bx SubRegReg 3 16Int 18 ax cx axbx 50 cx 3 ax := bx - cx 10 Licznik rozkazów

57 J.Nawrocki, Wprowadzenie.., Wykład 5 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

58 J.Nawrocki, Wprowadzenie.., Wykład 5 Koncepcja von Neumanna MovRegReg ax bx SubRegReg 3 16Int 18 axbx 13 Licznik rozkazów 50 ax cx cx 3 ax := bx - cx 1a. Ustawienie licznika na następny rozkaz

59 J.Nawrocki, Wprowadzenie.., Wykład 5 Koncepcja von Neumanna MovRegReg ax bx SubRegReg 3 16Int 18 axbx 13 Licznik rozkazów 50 ax cx cx 3 ax := bx - cx 5 2. Wykonanie rozkazu

60 J.Nawrocki, Wprowadzenie.., Wykład 5 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

61 J.Nawrocki, Wprowadzenie.., Wykład 5 Koncepcja von Neumanna MovRegReg ax bx SubRegReg 3 16Int 18 axbx 16 Licznik rozkazów 50 ax cx cx 3 ax := bx - cx 5 1a. Ustawienie licznika na następny rozkaz

62 J.Nawrocki, Wprowadzenie.., Wykład 5 Koncepcja von Neumanna MovRegReg ax bx SubRegReg 3 16Int 18 axbx 16 Licznik rozkazów 50 ax cx cx 3 ax := bx - cx Wykonanie rozkazu

63 J.Nawrocki, Wprowadzenie.., Wykład 5 Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Koncepcja von Neumanna Rozkazy skoku

64 J.Nawrocki, Wprowadzenie.., Wykład 5 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

65 J.Nawrocki, Wprowadzenie.., Wykład 5 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...

66 J.Nawrocki, Wprowadzenie.., Wykład 5 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

67 J.Nawrocki, Wprowadzenie.., Wykład 5 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

68 J.Nawrocki, Wprowadzenie.., Wykład 5 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

69 J.Nawrocki, Wprowadzenie.., Wykład 5 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

70 J.Nawrocki, Wprowadzenie.., Wykład 5 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;

71 J.Nawrocki, Wprowadzenie.., Wykład 5 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!

72 J.Nawrocki, Wprowadzenie.., Wykład 5 Literatura J.Nawrocki, Programowanie komputerów IBM PC w języku asemblera metodą systematyczną, WPP, 1991.

73 J.Nawrocki, Wprowadzenie.., Wykład 5 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?


Pobierz ppt "Język asemblera Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki."

Podobne prezentacje


Reklamy Google