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 Jerzy.Nawrocki@put.poznan.pl http://www.cs.put.poznan.pl/~nawrocki/ics/ Wprowadzenie do informatyki Wykład 5

2 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)

3 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.

4 J.Nawrocki, Wprowadzenie.., Wykład 5 Kodowanie rozkazów Kod Rozkaz Przykład 1 MovRegCon(R, C) 1 1 0 R1 0 2 IfRegLeCon(R, C, I) 2 2 1 20 R2 1.. 3 MulRegReg(Rd, Rs) 3 1 2 R1 R1*R2 4 SubRegCon(Rd, C) 4 2 1 R2 R2-1 5 Jump(I) 5 14 6 Stop 6

5 J.Nawrocki, Wprowadzenie.., Wykład 5 Obliczanie n! StartStop R1 1 R1 1 R1 R1 * R2 R1 R1 * R2 R2 R2 - 1 R2 R2 - 1 R2 > 1 Tak Nie Warunek pocz.: R2 = n Warunek końc.: R1 = n!

6 J.Nawrocki, Wprowadzenie.., Wykład 5 Kodowanie rozkazów 1 1 1 MovRegCon R1 1 10 2 2 1 13 25 IfRegLeCon 3 17 MulRegReg 1 2 4 2 1 20SubRegCon 5 13 6 23 Jump 25Stop

7 J.Nawrocki, Wprowadzenie.., Wykład 5 Kodowanie rozkazów 1 1 1 MovRegCon R1 1 10 2 2 1 13 25 IfRegLeCon 3 17 MulRegReg 1 2 4 2 1 20SubRegCon 5 13 6 23 Jump 25Stop R2R1 3 10 IC We Wyj

8 J.Nawrocki, Wprowadzenie.., Wykład 5 Kodowanie rozkazów 1 1 1 MovRegCon R1 1 10 2 2 1 13 25 IfRegLeCon 3 17 MulRegReg 1 2 4 2 1 20SubRegCon 5 13 6 23 Jump 25Stop R2R1 3 13 IC 1 We Wyj

9 J.Nawrocki, Wprowadzenie.., Wykład 5 Kodowanie rozkazów 1 1 1 MovRegCon R1 1 10 2 2 1 13 25 IfRegLeCon 3 17 MulRegReg 1 2 4 2 1 20SubRegCon 5 13 6 23 Jump 25Stop R2R1 3 17 IC 1 We Wyj

10 J.Nawrocki, Wprowadzenie.., Wykład 5 Kodowanie rozkazów 1 1 1 MovRegCon R1 1 10 2 2 1 13 25 IfRegLeCon 3 17 MulRegReg 1 2 4 2 1 20SubRegCon 5 13 6 23 Jump 25Stop R2R1 3 20 IC 1 3 We Wyj

11 J.Nawrocki, Wprowadzenie.., Wykład 5 Kodowanie rozkazów 1 1 1 MovRegCon R1 1 10 2 2 1 13 25 IfRegLeCon 3 17 MulRegReg 1 2 4 2 1 20SubRegCon 5 13 6 23 Jump 25Stop R2R1 3 23 IC 1 32 We Wyj

12 J.Nawrocki, Wprowadzenie.., Wykład 5 Kodowanie rozkazów 1 1 1 MovRegCon R1 1 10 2 2 1 13 25 IfRegLeCon 3 17 MulRegReg 1 2 4 2 1 20SubRegCon 5 13 6 23 Jump 25Stop R2R1 3 13 IC 1 32 We Wyj

13 J.Nawrocki, Wprowadzenie.., Wykład 5 Kodowanie rozkazów 1 1 1 MovRegCon R1 1 10 2 2 1 13 25 IfRegLeCon 3 17 MulRegReg 1 2 4 2 1 20SubRegCon 5 13 6 23 Jump 25Stop R2R1 3 17 IC 1 32 We Wyj

14 J.Nawrocki, Wprowadzenie.., Wykład 5 Kodowanie rozkazów 1 1 1 MovRegCon R1 1 10 2 2 1 13 25 IfRegLeCon 3 17 MulRegReg 1 2 4 2 1 20SubRegCon 5 13 6 23 Jump 25Stop R2R1 3 20 IC 1 32 6 We Wyj

15 J.Nawrocki, Wprowadzenie.., Wykład 5 Kodowanie rozkazów 1 1 1 MovRegCon R1 1 10 2 2 1 13 25 IfRegLeCon 3 17 MulRegReg 1 2 4 2 1 20SubRegCon 5 13 6 23 Jump 25Stop R2R1 3 23 IC 1 32 61 We Wyj

16 J.Nawrocki, Wprowadzenie.., Wykład 5 Kodowanie rozkazów 1 1 1 MovRegCon R1 1 10 2 2 1 13 25 IfRegLeCon 3 17 MulRegReg 1 2 4 2 1 20SubRegCon 5 13 6 23 Jump 25Stop R2R1 3 13 IC 1 32 61 We Wyj

17 J.Nawrocki, Wprowadzenie.., Wykład 5 Kodowanie rozkazów 1 1 1 MovRegCon R1 1 10 2 2 1 13 25 IfRegLeCon 3 17 MulRegReg 1 2 4 2 1 20SubRegCon 5 13 6 23 Jump 25Stop R2R1 3 13 IC 1 32 61 We Wyj

18 J.Nawrocki, Wprowadzenie.., Wykład 5 Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Najważniejsze rozkazy

19 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

20 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

21 J.Nawrocki, Wprowadzenie.., Wykład 5 Prosty program Struktura programu Program: zbiór (oddzielnie kompilowanych) modułów

22 J.Nawrocki, Wprowadzenie.., Wykład 5 Prosty program Struktura programu Program: zbiór (oddzielnie kompilowanych) modułów Error

23 J.Nawrocki, Wprowadzenie.., Wykład 5 Prosty program Struktura programu Program: zbiór (oddzielnie kompilowanych) modułów m1.asm masmmasm m1.obj

24 J.Nawrocki, Wprowadzenie.., Wykład 5 Prosty program Struktura programu Program: zbiór (oddzielnie kompilowanych) modułów masmmasm m1.asm masmmasm m1.obj m2.asmm2.obj LinkLink p.exe

25 J.Nawrocki, Wprowadzenie.., Wykład 5 Prosty program Struktura programu Program: zbiór (oddzielnie kompilowanych) modułów Moduł: zbiór segmentów Pamięć 0 65535 Intel 8080

26 J.Nawrocki, Wprowadzenie.., Wykład 5 Prosty program Struktura programu Program: zbiór (oddzielnie kompilowanych) modułów Moduł: zbiór segmentów KodDaneStosDodatk Intel 8086 0 1 048 575 0 65535 cscs dsdss eses

27 J.Nawrocki, Wprowadzenie.., Wykład 5 Prosty program Struktura programu nazwa_seg SEGMENT ASSUME CS: nazwa_seg etyk_pocz: instrukcje nazwa_seg ENDS END etyk_pocz Program: zbiór (oddzielnie kompilowanych) modułów Moduł: zbiór segmentów Koniec modułu

28 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

29 J.Nawrocki, Wprowadzenie.., Wykład 5 Prosty program Kompilacja i uruchomienie Zapisz program w pliku plik.asm masm pliklink plik debug plik.exe

30 J.Nawrocki, Wprowadzenie.., Wykład 5 Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Najważniejsze rozkazy

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

32 J.Nawrocki, Wprowadzenie.., Wykład 5 DEBUG - przykład sesji Wynik - rax AX 0000 1 - rbx BX 0000 2 - rcx CX 0005 3 : : : - g AX=0006 BX=0002 CX=0003 DX=0000 SP=0000 DS=1A8D ES=1A8D SS=1A9D CS=1A9D IP=0004 1A9D:0004 CC INT 3 - q

33 J.Nawrocki, Wprowadzenie.., Wykład 5 DEBUG - inna sesja - rax AX 0000 6 - rbx BX 0000 6 - rcx CX 0005 6 : : : - g AX=0012 BX=0002 CX=0003 DX=0000 SP=0000 DS=1A8D ES=1A8D SS=1A9D CS=1A9D IP=0004 1A9D:0004 CC INT 3 - q 12 czy 18?

34 J.Nawrocki, Wprowadzenie.., Wykład 5 Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Najważniejsze rozkazy

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

36 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna System szesnastkowy 123 16 = 1*16 2 + 2* 16 1 + 3* 16 0 = = 256 + 32 + 3 = 291 10 12 16 = 1*16 1 + 2*16 0 = 16 + 2 = 18 10

37 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna - rax AX 0000 6 - rbx BX 0000 6 - rcx CX 0005 6 : : : -g AX=0012 BX=0002 CX=0003 DX=0000 SP=0000 DS=1A8D ES=1A8D SS=1A9D CS=1A9D IP=0004 1A9D:0004 CC INT 3 - q OK. 12 16 = 18 10 Debug - problem

38 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie 28F + 37F 28F + 37F

39 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie 28 F + 37 F 28 F + 37 F F 16 + F 16 = 15 10 + 15 10 = 30 10 30 10 : 16 10 = 1 reszta 14 10 = 1 reszta E 16

40 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie 1 28 F + 37 F E 1 28 F + 37 F E F 16 + F 16 = 15 10 + 15 10 = 30 10 30 10 : 16 10 = 1 reszta 14 10 = 1 reszta E 16

41 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie 1 2 8 F + 3 7 F E 1 2 8 F + 3 7 F E

42 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie 1 2 8 F + 3 7 F E 1 2 8 F + 3 7 F E 1 + 8 16 + 7 16 = = 16 10 16 10 : 16 10 = 1 reszta 0 10 = 1 reszta 0 16

43 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie 11 2 8 F + 3 7 F 0E 11 2 8 F + 3 7 F 0E 1 + 8 16 + 7 16 = = 16 10 16 10 : 16 10 = 1 reszta 0 10 = 1 reszta 0 16

44 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie 11 2 8 F + 3 7 F 0E 11 2 8 F + 3 7 F 0E

45 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie 11 2 8F + 3 7F 0E 11 2 8F + 3 7F 0E 1 + 2 16 + 3 16 = = 6 10 6 10 : 16 10 = 0 reszta 6 10 = 0 reszta 6 16

46 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie 011 2 8F + 3 7F 60E 011 2 8F + 3 7F 60E 1 + 2 16 + 3 16 = = 6 10 6 10 : 16 10 = 0 reszta 6 10 = 0 reszta 6 16

47 J.Nawrocki, Wprowadzenie.., Wykład 5 Arytmetyka heksadecymalna Dodawanie 011 2 8F + 3 7F 60E 011 2 8F + 3 7F 60E

48 J.Nawrocki, Wprowadzenie.., Wykład 5 Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Najważniejsze rozkazy

49 J.Nawrocki, Wprowadzenie.., Wykład 5 Liczby ujemne Uzupełnienie do 2 Liczba ujemna -b jest reprezentowana jako: 2 n - b n bitów daje przedział: [-2 n-1, 2 n-1 - 1]

50 J.Nawrocki, Wprowadzenie.., Wykład 5 Liczby ujemne 3 bity 000 2 = 0 10 001 2 = 1 10 010 2 = 2 10 011 2 = 3 10 100 2 = 4 10 101 2 = 5 10 110 2 = 6 10 111 2 = 7 10 3 3 3 2 2 2 1 1 1 0 0 0 7 -1 7 6 -2 6 5 -3 5 4 -4 4 Liczba Kod 2 3 - b

51 J.Nawrocki, Wprowadzenie.., Wykład 5 Liczby ujemne 16 bitów 7FFF 32767 7FFF......... 1 1 1 0 0 0 FFFF -1 FFFF......... 8001 -32767 8001 8000 -32768 8000 1111 FFFF 2 + 2 0001 1111 FFFF 2 + 2 0001 + 2 1 + 2 1 =

52 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 6 9 7 8 FFFF = -1 0000 0001 5 -5 -7 7 F - cyfra

53 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 6 9 7 8 0002 = -2 FFFD FFFE F - cyfra

54 J.Nawrocki, Wprowadzenie.., Wykład 5 Plan wykładu Prosty program DEBUG Arytmetyka heksadecymalna Liczby ujemne Najważniejsze rozkazy

55 J.Nawrocki, Wprowadzenie.., Wykład 5 Rozkazy pomocnicze Najważniejsze rozkazy c := z MOV c, z SUB c, z c := c - z NEG c c := - c ax := bx - cx - 1 mov ax, bx sub ax, cx sub ax, 1 move subtract negation

56 J.Nawrocki, Wprowadzenie.., Wykład 5 Skoki warunkowe Najważniejsze rozkazy 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

57 J.Nawrocki, Wprowadzenie.., Wykład 5 Skoki warunkowe Najważniejsze rozkazy 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...

58 J.Nawrocki, Wprowadzenie.., Wykład 5 Skoki warunkowe - przykład Najważniejsze rozkazy 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

59 J.Nawrocki, Wprowadzenie.., Wykład 5 Skok bezwarunkowy Najważniejsze rozkazy 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

60 J.Nawrocki, Wprowadzenie.., Wykład 5 Skok bezwarunkowy Najważniejsze rozkazy 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

61 J.Nawrocki, Wprowadzenie.., Wykład 5 Skok bezwarunkowy - przykład Najważniejsze rozkazy 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

62 J.Nawrocki, Wprowadzenie.., Wykład 5 Skok bezwarunkowy - przykład Najważniejsze rozkazy 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;

63 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!

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

65 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