1. Leksione 1 dhe 2: Koncepte Bazë
R. Vasili - Gjuha Assembly – Universiteti i «Ε. Çabej»
Simestri I – Teknololgji Informacioni
2. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
2
• Hyrje në Gjuhën Assembly
• Koncepti i Makines Virtuale
• Paraqitja e të Dhenave
• Veprime Buleane
3. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
3
Mirë se erdhet në Gjuhën Assembly
• Gjuha Assembly është gjuha më e vjetër e programimit.
• Nga të gjitha gjuhët, ajo është gjuha e ngjashme më e
afërt te gjuha natyrale e kompjutërit.
• Ka Akses Direkt te materiali(hardware) i kompjutërit.
• Ndihmon për të kuptuar në një madhësi të konsideru-
eshme arkitekturën e kompjutërit dhe sistemet e
shfrytëzimit.
4. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
4
Disa pyetje interesante për tu përgjigjur [1/4]
• Çfarë formimi duhet të kemi?
• Programim Kompjuteri (C++, C#, JAVA, VB…)
• Çfarë është një assembler?
• Një program që konverton programe me kod-burimor
(source-code) nga gjuha assembly në gjuhë makine
l(machine language)
• MASM (Microsoft Assembler), TASM (Borland Turbo
Assembler)
• Lidhësi(Linker) (program shoqërues i Assembler-it)
kombinon skedare individualë të krijuara nga një
assembler në një program të vetëm të ekzekutueshëm.
• Debugger-i pajis programuesit me një menyrë për të
ndjekur ekzekutimin e një programi dhe ekzaminimin e
përmbajtjes së kujtesës.
5. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
5
Disa pyetje interesante per tu pergjigjur [2/4]
• Ç’ tipe progamesh do krijojmë?
• 16-Bit Real-Address Mode: MS-DOS, DOS emulator
• 32-Bit Protected Mode: Microsoft Windows
• Ç’ relacion ka gjuha assembly me atë të makines?
• Korespondence Një-me-Një
• Po me gjuhet C++ dhe Java? P.sh., X=(Y+4) *3
mov eax, Y
add eax, 4
mov ebx, 3
imul ebx
mov X, eax
6. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
6
Disa pyetje interesante per tu pergjigjur [3/4]
• Çfarë do mesojmë?
• Parimet Bazë të Arkitektures së Komjutërit
• Parimet Bazë të Logjikës Booleane
• Si menaxhojnë kujtesën, si përdorin mënyrat real mode,
protected mode dhe virtual mode proçesorët IA-32
• Si përkthejnë instruksionet në gjuhë assembly dhe kod
të paster(native) makine kompiluesit(compilers) e
gjuhëve të nivelit të lartë ( si C++)
• Përmirësimet e teknikave të debugging në nivel-makine
(p.sh., gabimet gjatë alokimit të kujtesës)
• Si komunikojnë, programet aplikative, me sistemin e
shfrytëzimit të kompjutërit nëpërmjet menaxhuesve të
ndërprerjeve, thirrjeve të sistemit, dhe hapësirave të
përbashkëta të kujtesës
7. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
7
Disa pyetje interesante per tu pergjigjur [4/4]
• A është gjuha Assembly portative?
• Një gjuhë , programet burimore të së cilës mund të kompilohen
dhe të ekzekutohen në një larmi të gjerë sistemesh
kompjuterike lthuhet se është portative.
• Gjuha Assembly nuk ben asnjë tentative për t’u berë portative.
• Ajo është e lidhur ngushtë me një familje specifike proçesorësh.
• Pse e studiojmë gjuhën Assembly?
• Për programe në Sisteme të Ndërthurura(Embedded)
• Për programe të përsosura si për shpejtësi (runtime speed )
ashtu dhe për menaxhim hapësire.
• Për të fituar një kuptim të plotë të baskërveprimeve harduerit
(hardware) , Sistemit të Shfrytëzimit dhe programeve aplikative
• Për Drejtues Paisjesh(Device driver): programe që përkthejnë
komandat e përgjithshme të Sistemit të Shfrytëzimit në
referenca specifike të detaleve të harduerit
8. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
8
Aplikacione në Gjuhë Assembly
• Disa shembuj tipikë aplikacionesh:
• Aplikacione Biznesi për një platform të vetme
• Hardware device driver
• Aplikacione Biznesi për shumë platforma
• Sisteme të Ndërthurur & Lojëra Kompjuterike
(shiko tabelën pasardhëse)
9. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
9
Krahasimi i Ghuhës Assembly me Gjuhet e
Nivelit të Lartë
Tipi i Aplikacionit Gjuhë të Nivelit të Lartë Gjuha Assembly
Aplikacion Biznesi, i shkruar për
një platformë të vetme, me
madhësi të mesme në të lartë.
Struktura tipike e bejnë të lehtë
të organizojnë dhe të mirë-
mbajnë segmente të mëdha
kodi.
Struktura tipike minimale, keshtë mund
të imponohet nga programues me nivele
të ndryshme eksperience. Kjo shpie në
vështirësi për mirëmbajtjen e kodit
ekzistues.
Hardware device driver Gjuha mund të mos na pajis me
akses të drejtpërdrejt në
hardware. Akoma dhe kur e bën,
shpeshherë duhen përdorur
teknika kodimi të komplikuara,
gjë që sjell vështirësi në
mirëmbajtje.
Aksesi në hardware është i hapur dhe i
thjeshtë. I lehtë për t u mirëmbajtur, kur
programet janë të shkurtëra dhe të
dokumentuara mirë.
Aplikacione Biznesi të shkrojtur
për platforma të shumëfishta
(sisteme të ndryshme shfry-
tëzimi)
Zakonisht krejt portative. Kodi
burimor mund të kompilohet në
çdo sistem shfrytëzimi të
planifikuar me ndryshime
minimale.
Duhet të rikodohet veç e veç për çdo
platformë, shpesh duke përdorur një
asemblues me sintaksë tjetër. Është
shumë i vështirë për t’u mirëmbajtur.
Sisteme të ndërthurur (embed-
ded) dhe lojera kompjuterike që
kërkojnë akses të drejtpërdrejt
në hardware.
Prodhon kod të ekzekutueshëm
të tepërt, dhe mund të mos
ekzekutohet në mënyrë efikase.
Është ideal, për arsye se kodi i
ekzekutueshëm është i vogël dhe
ekzekutohet shumë shpejt.
10. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
10
Në vazhdim
• Hyrje
• Koncepti i Makines Virtuale
• Pasqyrimi i të Dhenave
• Veprime Buleane
11. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
11
Koncepti i Makinës Virtuale
• Makinat Virtuale
• Nivele Specifike të Makinës
12. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
12
Makinat Virtuale [1/2]
• Koncepti i Makinës Virtuale
• Një mënyrë më efektive për të sqaruar relacionet midis
materialit dhe softit të kompjutërave
• Në In terms of programming languages
• Çdo kompjuter ka një gjuhë të papërpunuar makine(native
machine language )(Gjuhë L0) që ekzekutohet direkt në
materialin (hardware) e tij
• Zakonisht ndërtohet një gjuhë më e favorshme për njerëzit
e bazuar në atë të makinës, e quajtur Language L1
• Programet e shkruar në L1 mund të ekzekutohen në dy mënyra
të ndryshme:
• Me interpretim – programi i nivelit L0 interpreton &
ekzekuton instruksionet e nivelit L1 një nga një
• Me përkthim – programi i nivelit L1 përkthehet terësisht në
nivelin L0 , which then runs on the computer hardware
13. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
13
Makinat Virtuale [2/2]
• Në kushtet e një kompjutëri të dhenë
• VM1 mund të ekzekutojë komanda të shkruara në gjuhën L1.
• VM2 mund të ekzekutojë komanda të shkruara në gjuhën L2.
• Procedura mund të përsëritet derisa të projektohet një makinë
virtuale VMn e tillë që të suportojë një gjuhë të fuqishme dhe të
lehtë për t’u përdorur.
• Gjuha e programimit Java bazohet në konceptin e makinës virtuale.
• Një program i shkrojtur në gjuhën Java përkthehet nga një
kompilator Java në Java byte code.
• Java byte code: një gjuhë e nivelit të ulët (low-level) që
ekzekutohet shpejt gjatë kohës së ekzekutimit(run time) nga
makina virtuale Java (JVM).
• Makina virtuale Java(JVM) është implementuar në shumë
sisteme kompjuterike të ndryshme, duke bërë programet Java
relativisht të pavarura nga sistemi.
14. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
14
Përkthimi i Gjuhëve
Shqip: Pasqyroni shumën e A herë B plus C.
C++: cout << (A * B + C);
Gjuha Assembly :
mov eax,A
mul B
add eax,C
call WriteInt
Gjuha e Makinës Intel :
A1 00000000
F7 25 00000004
03 05 00000008
E8 00500000
15. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
15
Nivelet Specifike të Makinës
High-Level Language
Assembly Language
Operating System
Instruction Set
Architecture
Microarchitecture
Digital Logic Level 0
Level 1
Level 2
Level 3
Level 4
Level 5
(në vijim përshkruhen nivelet
individuale . . . )
16. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
16
Gjuhë të Nivelit të Lartë
• Niveli 5
• Gjuhë të orientuara nga Applikacionet
• C++, Java, Pascal, Visual Basic . . .
• Programi kompilohet në gjuhë assembly
(Niveli 4)
17. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
17
Gjuha Assembly
• Niveli 4
• Mnemonika instruksionesh që kanë
korespondence një-me-një me gjuhen e
makinës
• Thirrje funksionesh të shkruar në nivelin e
sistemit të shfrytëzimit (Niveli 3)
• Programet përkthehen në gjuhë makine
(Niveli 2)
18. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
18
Sistemi i Shfrytëzimit
• Niveli 3
• Pajis me shërbime programet e Nivelit 4
• Të përkthyera dhe të ekzekutuara te Niveli
instruction set architecture (Niveli 2)
19. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
19
Instruction Set Architecture
• Niveli 2
• Njihet gjithashtu si gjuhë konvencionale
makine(conventional machine language)
• Ekzekutohet nga programet e Nivelit 1
(microarchitecture)
20. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
20
Microarchitecture
• Niveli 1
• Interpreton instruksione të makinës
konvencionale (Niveli 2)
• Ekzekutohet nga hardware shifror(Niveli 0)
21. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
21
Logjika Shifrore (Digital Logic)
• Niveli 0
• CPU, e ndërtuar nga ura shifrore logjike
• Busi i Sistemit
• Kujtesa
• Implementohet me përdorimin e
tranzistorëve bipolar
Në vazhdim: Paraqitja e të dhenave
22. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
22
Në vazhdim
• Hyrje në Gjuhën Assembly
• Koncepti i Makines Virtuale
• Paraqitja e të Dhenave
• Veprimet Buleane
23. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
23
Paraqitja e të Dhenave
• Numrat Binarë
• Përkthime midis binarëve dhe dhjetorëve
• Mbledhja me numra Binarë
• Madhësitë e akomodimit të numrave të plotë
• Numrat e plotë Hexadecimal
• Përkthime midis dhjetorëve dhe hexadecimalëve
• Zbritja Hexadecimale
• Numra të plotë me shenjë
• Zbritja Binare
• Hapësira e akomodimit të Karaktereve(Character)
24. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
24
Numra Binarë
• Shifrat janë 1 dhe 0
• 1 = true
• 0 = false
• MSB – most significant bit(Bit-i më i rendësishëm)
• LSB – least significant bit(Bit-i më pak i rendësi-
shëm)
• Numërimi i Bit-eve :
015
1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 0
MSB LSB
25. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
25
Numra Binarë
• Çdo shifër (bit) është ose 1 ose 0
• Çdo shifër paraqet një fuqi të 2-shit:
1 1 1 1 1 1 1 1
27 26 25 24 23 22 21 20
Çdo numër
binar është një
shume fuqish të
2-shit
26. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
26
Përkthimi i Binarëve në Dhjetor
Komenti i peshës së pozicionit tregon se si llogaritim
vlerën dhjetore të çdo bit-i binar:
dec = (Dn-1 2n-1) + (Dn-2 2n-2) + ... + (D1 21) + (D0 20)
D = shifër binare digit
Nr. binar 00001001 = Nr. dhjetor 9:
(1 23) + (1 20) = 9
27. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
27
Përkthimi i Dhjetorëve pa shenjë në Binarë
• Pjestojmë në menyrë të përseritur numrin dhjetor me
2. Çdo mbetje është një shifër binare në vlerën e
përkthyer:
37 = 100101
28. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
28
Mbledhja Binare
• Fillojmë me LSB, mbledhim çdo çift shifrash, duke
përfshirë mbartjen nëse është e pranishme.
0 0 0 0 0 1 1 1
0 0 0 0 0 1 0 0
+
0 0 0 0 1 0 1 1
1
(4)
(7)
(11)
carry:
01234bit position: 567
29. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
29
Madhësitë e akomodimit të Numrave Integer
byte
16
8
32
word
doubleword
64quadword
Cili është numri më i madh i plotë pa shenjë që mund të akomodohet në 20
bit?
Madhësi normale:
30. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
30
Numrat e plotë Hexadecimal
Vlera Binare janë paraqitur si hexadecimale.
31. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
31
Përkthimi i numrave Binarë në Hexadecimal
• Çdo shifër hexadecimale i korrespondojnë 4 bit binarë.
• Shembull: Përktheni numrin e plotë binar
000101101010011110010100 në hexadecimal:
32. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
32
Shndërrimi i numrave Hexadecimal në Dhjetorë
• Shumëzojmë çdo shifër me fuqinë korresponduese të
16-es:
dec = (D3 163) + (D2 162) + (D1 161) + (D0 160)
• Numri Hex 1234 barazohet me (1 163) + (2 162) + (3 161) + (4
160), ose numrin dhjetor 4,660.
• Numri Hex 3BA4 barazohet me (3 163) + (11 * 162) + (10 161) +
(4 160), ose numrin dhjetor 15,268.
33. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
33
Fuqitë e 16
Përdorën kur llogaritim vlera hexadecimale deri në 8
shifra të gjatë:
34. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
34
Shndërrimi i numrave Dhjetorë në Hexadecimal
dhjetor 422 = 1A6 hexadecimal
35. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
35
Mbledhja Hexadecimale
• Pjestoni shumën e dy shifrave me numrin e bazës (16). Herësi bëhet
vlera e mbartur, dhe mbetja është shuma e shifrave.
36 28 28 6A
42 45 58 4B
78 6D 80 B5
11
21 / 16 = 1, mbetja 5
Teknikë e rendësishme: Programuesit mbledhin dhe zbresin
shpesh adresën e variablave dhe instruksioneve.
36. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
36
Zbritja Hexadecimale
• Kur kërkohet një hua nga shifra në të majtë, shtoni 16
(dhjetor) te vlera e shifrës aktuale:
C6 75
A2 47
24 2E
-1
16 + 5 = 21
Praktike: Adresa e var1 është 00400020. Adresa e variablit pasardhës pas
var1 është 0040006A. Sa bytes përdorën nga var1?
37. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
37
Numrat e Plotë me shenjë
Bit-i më i lartë tregon shenjën. 1 = negative, 0 = positive
1 1 1 1 0 1 1 0
0 0 0 0 1 0 1 0
sign bit
Negative
Positive
Nëse shifra më e lartë e një numri të plotë hexadecimal është
> 7, vlera është negative. Shembuj: 8A, C5, A2, 9D
38. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
38
Formimi i Komplementit me Dyshin
• Numrat Negativë paraqiten në formen e
komplementit sipas dyshit
• Paraqet të Kundërtin e shumës
Vini re që 00000001 + 11111111 = 00000000
39. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
39
Zbritja Binare
• Kur zbresim A – B, konvertojmë B tek komplementi
me 2-shin
• Shtojmë A te (–B)
0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0
– 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1
0 0 0 0 1 0 0 1
Praktikë: Zbrisni 0101 nga 1001.
40. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
40
Mësoni si të kryeni sa vijojnë:
• Formoni komplementin sipas 2-shit të një numri të
plotë hexadecimal
• Konvertoni binarë me shenjë në dhjetorë
• Konvertoni dhjetorë me shenjë në binarë
• Konvertoni dhjetorë me shenjë në hexadecimal
• Konvertoni hexadecimal me shenjë në dhjetorë
41. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
41
Shkallët (Ranges) e Nr. Integer me shenjë
Bit-i më i lartë rezervohet për shenjën. Kjo gjë kufizon rangun:
Praktikë: Cila është vlera më e madhe pozitive që mund të akomodohet në
20 bit-e?
42. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
42
Hapësira e rezervimit të Character-eve
• Sete Karacteresh
• Standard ASCII (0 – 127)
• Extended ASCII (0 – 255)
• ANSI (0 – 255)
• Unicode (0 – 65,535)
• Null-terminated String
• Matricë karakteresh e ndjekur nga një
null byte
• Përdorimi i tabelës ASCII
43. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
43
Paraqitja e të Dhenave Numerike
• pure binary
• mund të llogaritet drejtpërdrejt
• ASCII binary
• string shifrash: "01010101"
• ASCII decimal
• string shifrash: "65"
• ASCII hexadecimal
• string shifrash : “41"
Ne vazhdim: Veprimet Booleane
44. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
44
Në vazhdim
• Hyrje në Gjuhën Assembly
• Koncepti i Makinës Virtuale
• Paraqitja e të Dhenave
• Veprimet Buleane
45. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
45
Veprimet Buleane
• NOT
• AND
• OR
• Përparësia e Veprimeve
• Tabelat e Vërtetësisë
46. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
46
Algjebra e Bulit
• Bazohet në logjikën symbolike, e përcaktuar nga George Boole
• Shrehjet(Expressions) Buleane të krijuara nga:
• NOT, AND, OR
Shprehja Përshkrimi
47. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
47
NOT
• Ndryshon (e kundërta) e një vlere buleane
• Tabela e vërtetësisë për veprimin Bulean
NOT :
NOT
Diagrama e Urës Dixhitale për NOT:
48. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
48
AND
• Tabela e vërtetësisë për veprimin Bulean AND :
AND
Diagrama e Urës Dixhitale për AND:
49. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
49
OR
• Tabela e vërtetësisë për veprimin Bulean OR :
OR
Diagrama e Urës Dixhitale për OR:
50. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
50
Përparësia e Veprimeve
• Shëmbuj që tregojnë rradhën e veprimeve:
Shprehja Rradha e Veprimeve
51. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
51
Tabela vertetesie (1 of 3)
• Një funksion Boolean ka një ose më shumë hyrje
Boolean-e, dhe kthen një dalje të thjeshtë Buleane.
• A tabelë vërtetësie shfaq te gjitha hyrjet dhe daljet e
një funksioni Bulean
Shëmbull: X Y
52. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
52
Tabela vertetesie (2 of 3)
• Shembull: X Y
53. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
53
Tabela vërtetësie (3 of 3)
• Shëmbull: (Y S) (X S)
mux
X
Y
S
Z
Multiplekser me dy hyrje
54. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
54
Përmbledhje
• Gjuha Assembly ju ndihmon të kuptoni si është
ndërtuar softi në nivelet e ulëta
• Gjuha Assembly ka një korrespondencë Një-me-Një
me Gjuhen e makines
• Çdo shtresë e një arkitekture kompjuterike që është
një abstraksion i një shtrese të makinës mund të jetë
harduer(hardware) ose softuer(software).
• Shprehjet Buleane janë thelbësore në ndërtimin e
harduerit dhe softuerit të kompjutërave
55. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
55
54 68 65 20 45 6E 64
Ç’ paraqesin këta numra?