Leksione 1 & 2
Transcript of Leksione 1 & 2
Leksione 1 dhe 2: Koncepte Bazë
R. Vasili - Gjuha Assembly – Universiteti i «Ε. Çabej»
Simestri I – Teknololgji Informacioni
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine2
• Hyrje në Gjuhën Assembly
• Koncepti i Makines Virtuale
• Paraqitja e të Dhenave
• Veprime Buleane
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine3
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.
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine4
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ë makinel(machine language)
• MASM (Microsoft Assembler), TASM (Borland TurboAssembler)
• 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 epërmbajtjes së kujtesës.
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine5
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine6
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine7
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine8
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)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine9
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.
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine10
Në vazhdim
• Hyrje
• Koncepti i Makines Virtuale
• Pasqyrimi i të Dhenave
• Veprime Buleane
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine11
Koncepti i Makinës Virtuale
• Makinat Virtuale
• Nivele Specifike të Makinës
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine12
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine13
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.
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine14
Përkthimi i Gjuhëve
Shqip: Pasqyroni shumën e A herë B plus C.
C++: cout << (A * B + C);
Gjuha Assembly :
mov eax,Amul Badd eax,C
call WriteInt
Gjuha e Makinës Intel :
A1 00000000
F7 25 00000004
03 05 00000008
E8 00500000
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine15
Nivelet Specifike të Makinës
High-Level Language
Assembly Language
Operating System
Instruction Set
Architecture
Microarchitecture
Digital LogicLevel 0
Level 1
Level 2
Level 3
Level 4
Level 5
(në vijim përshkruhen nivelet
individuale . . . )
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine16
Gjuhë të Nivelit të Lartë
• Niveli 5
• Gjuhë të orientuara nga Applikacionet
• C++, Java, Pascal, Visual Basic . . .
• Programi kompilohet në gjuhë assembly
(Niveli 4)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine17
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)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine18
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)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine19
Instruction Set Architecture
• Niveli 2
• Njihet gjithashtu si gjuhë konvencionale
makine(conventional machine language)
• Ekzekutohet nga programet e Nivelit 1
(microarchitecture)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine20
Microarchitecture
• Niveli 1
• Interpreton instruksione të makinës
konvencionale (Niveli 2)
• Ekzekutohet nga hardware shifror(Niveli 0)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine21
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine22
Në vazhdim
• Hyrje në Gjuhën Assembly
• Koncepti i Makines Virtuale
• Paraqitja e të Dhenave
• Veprimet Buleane
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine23
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)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine24
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine25
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine26
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine27
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine28
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine29
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:
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine30
Numrat e plotë Hexadecimal
Vlera Binare janë paraqitur si hexadecimale.
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine31
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:
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine32
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.
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine33
Fuqitë e 16
Përdorën kur llogaritim vlera hexadecimale deri në 8
shifra të gjatë:
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine34
Shndërrimi i numrave Dhjetorë në Hexadecimal
dhjetor 422 = 1A6 hexadecimal
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine35
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 6A42 45 58 4B78 6D 80 B5
11
21 / 16 = 1, mbetja 5
Teknikë e rendësishme: Programuesit mbledhin dhe zbresin
shpesh adresën e variablave dhe instruksioneve.
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine36
Zbritja Hexadecimale
• Kur kërkohet një hua nga shifra në të majtë, shtoni 16
(dhjetor) te vlera e shifrës aktuale:
C6 75A2 4724 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?
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine37
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine38
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine39
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.
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine40
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ë
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine41
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?
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine42
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine43
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine44
Në vazhdim
• Hyrje në Gjuhën Assembly
• Koncepti i Makinës Virtuale
• Paraqitja e të Dhenave
• Veprimet Buleane
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine45
Veprimet Buleane
• NOT
• AND
• OR
• Përparësia e Veprimeve
• Tabelat e Vërtetësisë
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine46
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine47
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:
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine48
AND
• Tabela e vërtetësisë për veprimin Bulean AND :
AND
Diagrama e Urës Dixhitale për AND:
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine49
OR
• Tabela e vërtetësisë për veprimin Bulean OR :
OR
Diagrama e Urës Dixhitale për OR:
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine50
Përparësia e Veprimeve
• Shëmbuj që tregojnë rradhën e veprimeve:
Shprehja Rradha e Veprimeve
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine51
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine52
Tabela vertetesie (2 of 3)
• Shembull: X Y
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine53
Tabela vërtetësie (3 of 3)
• Shëmbull: (Y S) (X S)
muxX
Y
S
Z
Multiplekser me dy hyrje
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine54
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
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine55
54 68 65 20 45 6E 64
Ç’ paraqesin këta numra?