Professional Documents
Culture Documents
Leksione 9 & 10
Leksione 9 & 10
Hyrje
2
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Libraria e Lidhu
Lidhur Book
3
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Hyrje n Librar
Librarit
it e Lidh
Lidhu
ura
Nj skedar q prmban proedura t kompiluara n
kod makine
I konstruktuar nga nj ose m shum skedar OBJ
Pr t ndrtuar nj librari, . . .
4
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Thirrja e nj Pro
Pro
edure Librarie
Librarie
Thirrja e nj Proedure Librarie me prdorimin e
instrunksionit CALL. Disa proedura krkojn argument
hyres. Direktiva INCLUDE kopjon prototipet e proedurave
(deklarations).
Shembulli i mposhtm afishon n konsol "1234":
INCLUDE
.code
mov
call
call
Irvine32.inc
eax,1234h
WriteHex
Crlf
; argumenti hyrs
; shfaq numrin hex
; fundi i rreshtit
5
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Lidhja
Lidhja me nj Librari
Librari
links
to
Irvine32.lib
links to
can link to
kernel32.lib
executes
kernel32.dll
6
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
N vazhdim
7
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Proedura
Pro
edura Librar
Librarie
ie - Hyrje (1 nga 4)
CloseFile Mbyll nj skedar disku t hapur
Clrscr Mbyll konsolen, lokalizon kursorin n kndin e majt lart
CreateOutputFile Krijon skedar t ri disku pr shkrim n output mode
Crlf Shkruan sekuencn e fundit t rreshtit te dalja standarte
Delay - Ndalon ekzekutimin e programit pr interval n milisekonda
DumpMem - Shkruan bllokun e kujtess te dalja standarte n hex
DumpRegs Afishon regjistrat e prdorimit t prgjithshm dhe flamujt (n hex)
GetCommandtail Kopjon command-line args n tabel bytesh
GetMaxXY - Merr numrat e kolonave, rreshtave n baferin e dritars s konsoles
GetMseconds - Kthen milisekondat e kaluara nga mesnata
8
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Proedura
Pro
edura Librar
Librarie
ie - Hyrje (2 nga 4)
GetTextColor Kthen ngjyrat e sfondit dhe t planit t par t tekstit
aktiv n dritarn e konsols
Gotoxy - Lokalizon kursorin te rreshti dhe shtylla n konsol
IsDigit - Vendos flamurin Zero nse AL prmban kod ASCII pr shifrat
dixhitale dhjetore (09)
MsgBox, MsgBoxAsk Afishon boks mesazhi popup
OpenInputFile Hap skedar ekzistues pr hyrje
ParseDecimal32 Konverton string integer pa shenj n binar
ParseInteger32 - Konverton string integer me shenj n binar
Random32 - Gjeneron numr t plot 32-bit pseudo t rastit n rangun
nga 0 n FFFFFFFFh
Randomize Prcakton elementin e gjeneratorit numrave t rastit
RandomRange - Gjeneron numr t plot pseudo t rastit n nj rang
specifik
ReadChar Lexon nj karakter t vetm nga hyrja standarte
9
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Proedura
Pro
edura Librar
Librarie
ie - Hyrje (3 nga 4)
ReadFromFile Lexon nj skedar disku t hapur pr hyrje n nj buffer
ReadDec - Lexon 32-bit numr dhjetor t plot pa shenj nga tastiera
ReadHex - Lexon 32-bit numr hexadecimal t plot nga tastiera
ReadInt - Lexon 32-bit numr dhjetor t plot pa shenj nga tastiera
ReadKey Lexon nj karakter nga buffer-i i hyrjes s tastiers
ReadString Lexon nj string nga Hyrja standarte, e prfunduar nga [Enter]
SetTextColor Vendos ngjyrat e planit t par dhe sfondit t t gjith
nnsekuencave t tekstit t dal n konsol
StrLength Kthen gjatsin e nj vargu karakteresh (string)
WaitMsg Afishon nj mesazh, pret pr shtypjen e tastit Enter
WriteBin Shkruan numr t plot 32-bit pa shenj n format binar ASCII.
WriteBinB Shkruan nj numr t plot n format byte, word, ose doubleword
WriteChar Shkruan nj karakter t vetm n Daljen standarte
10
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Proedura
Pro
edura Librar
Librarie
ie - Hyrje (4 nga 4)
WriteDec Shkruan nj numr t plote 32-bit pa shenj n format dhjetor
WriteHex - Shkruan nj numr t plote 32-bit pa shenj n format hexadecimal
WriteHexB Shkruan byte, word, ose doubleword n format hexadecimal
WriteInt - Shkruan nj numr t plote 32-bit me shenj n format dhjetor
WriteString Shkruan string t prfunduar me null te dritarja e konsols
WriteToFile - Shkruan buffer-in n nj skedar t hapur pr Dalje(output file)
WriteWindowsMsg Afishon mesazhin e gabimit m aktual t gjenruar nga
MS-Windows
11
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Shembull 1
Pastron ekranin, vonon programin pr 500 milisekonda, pastaj
zbraz flamujt dhe regjistrat.
.code
call
mov
call
call
Clrscr
eax,500
Delay
DumpRegs
Shembull Daljeje(output):
EAX=00000613 EBX=00000000 ECX=000000FF EDX=00000000
ESI=00000000 EDI=00000100 EBP=0000091E ESP=000000F6
EIP=00401026 EFL=00000286 CF=0 SF=1 ZF=0 OF=0
12
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Shembull 2
Afishon nj string t prfunduar me null dhe zhvendos
kursorin n krye t rreshtit tjetr t ekranit.
.data
str1 BYTE Gjuha Assembly sht e thjesht!",0
.code
mov edx,OFFSET str1
call WriteString
call Crlf
13
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Shembull 2a
Afishon nj string t prfunduar me null dhe zhvendos
kursorin n krye t rreshtit tjetr t ekranit (prdor iftin
e ndrthhurur CR/LF).
.data
str1 BYTE "Assembly language is easy!",0Dh,0Ah,0
.code
mov edx,OFFSET str1
call WriteString
14
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Shembull 3
Afishon nj numr t plot pa shenj n format binar, dhjetor, dhe
hexadecimal, secili n nj rresht t veant.
IntVal = 35
.code
mov eax,IntVal
call WriteBin
call Crlf
call WriteDec
call Crlf
call WriteHex
call Crlf
; display binary
; display decimal
; display hexadecimal
Shembull Daljeje(output):
0000 0000 0000 0000 0000 0000 0010 0011
35
23
15
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Sembull 4
Pret nj hyrje stringu nga prdoruesi. EDX tregon te stringu dhe
ECX prcakton numrin maksimal t karakterve q prdoruesi
lejohet t kaloj.
.data
fileName BYTE 80 DUP(0)
.code
mov edx,OFFSET fileName
mov ecx,SIZEOF fileName 1
call ReadString
Shembull 5
Gjneron dhe afishon 10 numra t plot pseudo t rastit me
shenj n rangun 0 99. E kalon do numr t till t plot te
WriteInt n EAX dhe e afishon at n rresht t veant.
.code
mov ecx,10
; loop counter
L1: mov
call
call
call
loop
;
;
;
;
;
eax,100
RandomRange
WriteInt
Crlf
L1
ceiling value
generate random int
display signed int
goto next display line
repeat loop
17
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Shembull 6
Afishon nj string t prfunduar me null, me karaktere t
verdha n sfond blu.
.data
str1 BYTE "Color output is easy!",0
.code
mov
call
mov
call
call
N vazhdim
19
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Operime
Oper
ime Stive(stack)
20
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
St
Stiva
iva gjat kohs s ekzekutimit
Imagjinoni nj stiv pjatash . . .
Pjatat shtohen vetm nga kreu(top)
Pjatat hiqen vetm nga kreu(top)
Struktura LIFO
10
9
8
7
6
5
4
3
2
1
top
bottom
21
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
St
Stiva
iva gjat kohs s ekzekutimit
Menaxhohet nga NJ.Q.P.(CPU), duke prdorur dy regjistra
SS (stack segment)
ESP (stack pointer) *
Offset
00001000
00000006
ESP
00000FFC
00000FF8
00000FF4
00000FF0
Operimi
Operi
mi PUSH (1 nga 2)
Nj operim 32-bit push zvoglon treguesin e stives
me 4 dhe kopjon vlern e vendndodhjes s treguar
nga treguesi i stivs.
BEFORE
00001000
00000006
00000FFC
00000FFC
000000A5
00000FF8
00000FF8
00000FF4
00000FF4
00000FF0
00000FF0
00001000
00000006
AFTER
ESP
ESP
23
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Operimi
Operi
mi PUSH (2 nga 2)
E njjta stiv pas vendosjes s dy numrave t tjer t plot:
Offset
00001000
00000006
00000FFC
000000A5
00000FF8
00000001
00000FF4
00000002
ESP
00000FF0
Operimi
Operi
mi POP
BEFORE
AFTER
00001000
00000006
00001000
00000006
00000FFC
000000A5
00000FFC
000000A5
00000FF8
00000001
00000FF8
00000001
00000FF4
00000002
00000FF0
ESP
ESP
00000FF4
00000FF0
25
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Instruks
Instru
ksion
iont
t PUSH d
dhe
he POP
PUSH sintaksa:
PUSH r/m16
PUSH r/m32
PUSH imm32
POP sintaksa:
POP r/m16
POP r/m32
26
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
; push regjistrat
mov
mov
mov
call
esi,OFFSET dwordVal
ecx,LENGTHOF dwordVal
ebx,TYPE dwordVal
DumpMem
; afisho nj kujtes
pop
pop
pop
ebx
ecx
esi
; rimerr regjistrat
27
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
mov ecx,20
L1:
L2:
;
;
;
loop L2
pop ecx
loop L1
brendshm
fillon cikli i brendshm
28
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
29
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Rradha Juaj.
Juaj. . .
Duke prdorur si pik fillimi programin e Kmbimit
t mbrapsht t nj Stringu,
#1: Modifikoni programin n mnyr q prdoruesi t mund
t bej hyrje t nj stringu q prmban nga 1 deri n 50
karaktere.
#2: Modifikoni programin n mnyr q ai t bej hyrje nj
list me numra t plot 32-bitsh nga prdoruesi, dhe pastaj
t afishoj numrat me renditje t kundert.
30
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Instruksione t
t tjera Stive
PUSHFD dhe POPFD
Bn push dhe pop registrin EFLAGS
31
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Rradha Juaj.
Juaj. . .
Shkruani nj program q bn sa vijojn:
Prcakton vlera t plota te EAX, EBX, ECX, EDX, ESI,
dhe EDI
Prdor PUSHAD pr t br push regjistrat me qllim
t prgjithshm n stiv
Duke prdorur nj cikl, programi juaj duhet t bj
pop do numr t plot nga stiva dhe ta afishoj at n
ekran
32
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
N vazhdim
33
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Krijimi i Proedurave
Dokumentimi i Proedurave
Shembull: Proedura SumOf
Instruksionet CALL dhe RET
Proedura e prsritur Calls
Etiketa(Labels) Lokale dhe Globale
Parametra Proedure
Symbole Flowchart
Operatori USES
34
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Ndrtimi i Pro
Pro
edurave
edurave
Probleme t mdha mund t ndahen n probleme m
t vogla pr ti br ato m t menaxhueshme
Nj procedure sht ekuivalentja ASM e nj funksioni
Java ose C++
M posht vijon nj proedur n gjuh assembly e
quajtur shembull:
shembull PROC
.
.
ret
shembull ENDP
35
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Dok
Dokumenti
umentimi
mi i Pro
Proedurave
edurave
Dokumentacion i sugjeruar pr do proedur:
Shembull:: Pro
Shembull
Pro
edura
edura SumOf
;--------------------------------------------------------SumOf PROC
;
; Llogarit dhe kthen shumn e tre numrave t plot 32-bit.
; Percepton: EAX, EBX, ECX, si tre numra t plot. Mund t
; jen me apo pa shenj.
; Kthen: EAX = shuma, dhe gjendjen e flamujve(Carry,
; Overflow, etj.) q ndryshon.
; Krkesat: asnj
;--------------------------------------------------------add eax,ebx
add eax,ecx
ret
SumOf ENDP
37
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Instruksionet
Instru
ksionet CALL d
dhe
he RET
Instruksioni CALL thrret nj proedur
Bn push ofset-in e instruksionit pasardhs n stiv
Kopjon adresn e proedurs s thirrur n EIP
38
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
main PROC
00000020 call MySub
00000025 mov eax,ebx
.
.
main ENDP
MySub PROC
00000040 mov eax,edx
.
.
ret
MySub ENDP
39
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Instruksioni CALL bn
ESP
EIP
00000040
00000025
ESP
00000025
EIP
Thirrje e prsritur(Nested
prsritur(Nested)) Pro
Pro
edurash
edurash
main PROC
.
.
call Sub1
exit
main ENDP
Sub1 PROC
.
.
call Sub2
ret
Sub1 ENDP
Sub2 PROC
.
.
call Sub3
ret
Sub2 ENDP
ESP
Sub3 PROC
.
.
ret
Sub3 ENDP
41
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Etiketa(Labels
Etiketa(
Labels)) Lok
Lokale
ale dhe Global
Globale
e
Nj etiket lokale sht e dallueshme vetm te instruksionet
brenda s njjts proedur. Nj etiket globale sht e
dallueshme kudo.
main PROC
jmp L2
L1::
exit
main ENDP
sub2 PROC
L2:
jmp L1
ret
sub2 ENDP
; gabim(error)
; etiket globale
; etiket locale
; ok
42
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Parametra
Paramet
ra Pro
Proedure
edure (1 nga 3)
Nj proedur e mir mund t jet e prshtatshme
pr prdorim n shum programe t ndryshme
Por jo nse ajo referohet n emra specifik variablash
43
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Parametra
Paramet
ra Pro
Proedure
edure (2 nga 3)
Proedura ArraySum llogarit shumn e nj matrice. Ajo i
referohet dy emrave specifik variablash:
ArraySum PROC
mov esi,0
mov eax,0
mov ecx,LENGTHOF myarray
L1: add eax,myArray[esi]
add esi,4
loop L1
mov theSum,eax
ret
ArraySum ENDP
; indeksi i matrics
; vendos shumn n zero
; vendos numrin e elementeve
;
;
;
;
;
Parametra
Paramet
ra Pro
Proedure
edure (3 nga 3)
Ky version i ArraySum kthen shumn e fardo matrice t tipit
doubleword adresa e s cils ndodhet n ESI. Shuma kthehet
n EAX:
ArraySum PROC
; Prcepton: ESI tregon n nj matric me doublewords,
;
ECX = numri elementeve t matrics.
; Kthen: EAX = shuma
;----------------------------------------------------mov eax,0
; vendos shumn n zero
L1: add eax,[esi]
add esi,4
loop L1
;
;
;
;
ret
ArraySum ENDP
45
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Simbole
mbole Bllokskemash(
Bllokskemash(Flowchart
Flowchart))
Simbolet q vijojn jan simbolet baz pr ndrtimin
e bllokskemave(flowcharts):
begin / end
manual input
process (task)
procedure
call
display
decision
yes
no
46
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
ArraySum Procedure
begin
Bllokskema pr
Proedurn
Pro
edurn
ArraySum
eax = 0
add eax,[esi]
push esi
push ecx
mov eax,0
add esi, 4
AS1:
add eax,[esi]
add esi,4
loop AS1
ecx = ecx 1
pop
pop
yes
ecx
esi
ecx > 0?
no
pop ecx, esi
end
47
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Rradha Juaj.
Juaj. . .
Ndrtoni nj bllokskem q shpreh
pseudokodin q vijon:
Merr si hyrje notn e kontrollit nga prdoruesi
if( nota > 70 )
afisho Kalon"
else
afisho Prserit"
endif
48
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
. . . (Zgjidhja
(Zgjidhja))
Fillim
begin
input
exam
grade
Kalo
noten
e kontrollit
no
yes
grade > 70?
Nota
Afisho
Kalon
Afisho
Prserit
display "Fail"
display "Pass"
Fund
end
49
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Rradha Juaj.
Juaj. . .
Modifiko bllokskemn e msiprme n mnyr q
prdoruesi t kaloj nota kontrolli derisa t shtypet
1
50
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Operatorii USES
Operator
Shfaq listn e regjistrave q ruhen
ArraySum PROC USES esi ecx
mov eax,0
; vendos shumn n zero
etc.
51
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
;
;
;
;
;
52
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
N vazhdim
53
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
54
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Afisho shumn
55
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Pro
Pro
edura
edura Design (2 nga 4)
Main
Clrscr
PromptForIntegers
WriteString
ReadInt
ArraySum
DisplaySum
WriteString
WriteInt
; pastron ekranin
; afishon stringun
; lexon integer
; shuma e numr. t plot
; afishon stringun
; afishon numrin e plot
56
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Struk
Stru
ktur
tura
a Chart (3 nga 4)
Summation
Program (main)
Clrscr
PromptForIntegers
WriteString
ReadInt
ArraySum
DisplaySum
WriteString
WriteInt
Ngjyra gri
tregon
procedura
librarie
57
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Shembull Daljeje(Output
Daljeje(Output)) (4 nga 4)
58
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Prmbledhje
Proedura bllok i emertuar kodi t ekzekutueshm
Runtime stack struktur LIFO
mban adresat e kthyera, parametrat, variablat lokal
PUSH shton nj vler te stiva(stack)
POP heq vlern nga stiva
59
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine
Fund
60
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine