Download as pdf or txt
Download as pdf or txt
You are on page 1of 60

Leksione 9-10: Proedurat

Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

Hyrje

Lidhja me nj Librari t jashtme


Libraria e lidhur Book
Operime Stive(stack)
Prcaktimi dhe prdorimi i Proedurave
Projektimi i programit duke prdorur Procedurat

2
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

Libraria e Lidhu
Lidhur Book

Hyrje n Librarit e Lidhura


Thirrja e nj proedure Librarie
Lidhja me nj Library
Proedura Librarie Hyrje
Gjasht Shembuj

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

Fillojm me nj ose m shum skedare burimor ASM


Asemblojm secilin prej tyre n skedar OBJ
Krijojm nj skedar libtarie bosh(prapashtesa .LIB)
Shtojm skedarin(et) OBJ te skedari i libraris, duke
prdorur programin ndihms - Microsoft LIB utility

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

Programet lidhen te libraria Irvine32.lib duke prdorur komandn e


lidhsit (linker) brenda nj skedari batch me emr make32.bat.
Vini re dy skedaret LIB: Irvine32.lib, dhe kernel32.lib

Skedari i fundit sht pjes e Microsoft Win32


Software Development Kit (SDK)
Your
program
Programi
Juaj

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

Lidhja me nj Librari t jashtme


Libraria e lidhur Book
Operime Stive(stack)
Prcaktimi dhe prdorimi i Proedurave
Projektimi i programit duke prdorur Procedurat

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

Nj byte null shtohet automatikisht te stringu.


16
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

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

eax,yellow + (blue * 16)


SetTextColor
edx,OFFSET str1
WriteString
Crlf

Ngjyra e sfondit para se ti shtohet ngjyrs s planit t par


shumzohet me 16.
18
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

N vazhdim

Lidhja me nj Librari t jashtme


Libraria e lidhur Book
Operime Stive(stack)
Prcaktimi dhe prdorimi i Proedurave
Projektimi i programit duke prdorur Proedurat

19
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

Operime
Oper
ime Stive(stack)

Stiva gjat kohs s ekzekutimit (Runtime Stack)


Operimi PUSH
Operimi POP
Instruksionet PUSH dhe POP
Prdorimi i instruksioneve PUSH dhe POP
Shembull: Kmbim i mbrapsht i nj Stringu
Instruksione q kan t bejn me stivn.

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

* SP n Mnyrn Reale t Adresimit


22
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

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

Stiva rritet pr nga posht stives. Hapsira nn treguesin


ESP sht gjithnj e disponueshme (prve rastit kur stiva
tejmbushet[overflowed]).
24
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

Operimi
Operi
mi POP

Kopjon vlern e stivs stack[ESP] n nj regjistr ose variabl.


Shton n te treguesi ESP, ku n sht ose 2 ose 4.
Vlera e n-s varet nga atributi i operandit q merr t dhenat

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

Prdorimi i PUSH dhe


dhe POP
Ruajn dhe rimarrin vlerat e regjistrave kur ato prmbajn vlera
t rendsishme. Instruksionet PUSH dhe POP prseritn n
rend t kundrt.
push esi
push ecx
push ebx

; 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

Shembull:: Cikl i prseritur(Nested


Shembull
prseritur(Nested Loop
Loop))
Kur krijojm nj cikl t prseritur, para se t futemi te cikli i
brendshm, bjm push numruesin e ciklit t jashtm :
mov ecx,100
push ecx

; vendos numeruesin e ciklit t jashtm


; fillon cikli i jashtm
; ruan numruesin e ciklit t jashtm

mov ecx,20

; vendos numeruesin e ciklit t

L1:

L2:

;
;
;
loop L2
pop ecx
loop L1

brendshm
fillon cikli i brendshm

; prserit ciklin e brendshm


; rimerr numeruesin e ciklit t jashtm
; prserit ciklin e jashtm

28
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

Shembull:: Kembim i mbrapsht i nj Stringu


Shembull

Prdorim nj cikl me adresim t indeksuar


Bejm Push do karakter n stiv
Fillojm me kreun e stringut, bejm pop stivn n rend t
kundrt, ndrfutim do karakter mbrapa te stringu
Kodi burimor
Pyetje: Pse duhet vendosur do karakter n EAX para se t
behet push?

Sepse vetm vlera word (16-bit) ose doubleword (32-bit)


mund t bhen push n stiv.

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

PUSHAD ben push regjistrat me qllim t prgjithshm


me 32-bit n stiv
renditja: EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI

POPAD bn pop t njjtat regjistra si m sipr nga stiva


me renditje t kundrt
PUSHA dhe POPA bjn t njjtn gje pr regjistrat me
16-bit

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

Lidhja me nj Librari t Jashtme


Libraria e Lidhur Book
Operime stive(stack)
Prcaktimi dhe prdorimi i proedurave
Projektimi i programit duke prdorur Proedurat

33
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

Prcaktimi dhe prdorimi i Pro


Pro
edurave
edurave

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:

Nj prshkrim i t gjitha detyrave q kryhen nga proedura.

Merr(Receives): Nj list me parametra hyrjeje; forma e prdorimit


t tyre dhe krkesat.

Kthen(Returns): Nj prshkrim i vlerave t kthyera nga proedura.

Krkon(Requires): List fakultative e krkesave t quajtura


kushte paraprake(preconditions) q duhet t knaqen para se t
thirret proedura.

Nse proedura thirret pa knaqur kushtet paraprake, ajo


mund t mos prodhoj daljen e pritur.
36
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

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

Instruksioni RET na kthen nga nj proedur


Bn pop kreun e stivs n EIP

38
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

Shembull me CALLCALL-RET (1 nga 2)

0000025 sht ofset-i i


instruksionit q vjen
menjher pas instruksionit
CALL

00000040 sht ofset-i i


instruksionit t par brenda
MySub

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

Shembull me CALLCALL-RET (2 nga 2)


00000025

Instruksioni CALL bn

ESP

push vlern 00000025


mbi stiv, dhe ngarkon
00000040 n EIP

EIP

Instruksioni RET bn pop

vlern 00000025 nga


stiva n EIP

00000040

00000025

ESP

00000025
EIP

(stiva paraekzekutimit t instruksionit RET)


40
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

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

Gjat kohs q thirret, the stiva


prmban t tre adresat q do
kthehen:
(ret to main)
(ret to Sub1)
(ret to Sub2)

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

Parametrat ndihmojn pr ti br proedurat m


elastike pr arsye se vlerat e parametrave mund t
ndryshohen gjat kohs s ekzekutimit

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
;
;
;
;
;

shton do numr te shuma


tregon te numri tjetr
prserit sipas prmasave t
matrics
ruan shumn

Si do llogaritnit shumn e dy ose tre matricave me t njjtin


program?
44
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

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

;
;
;
;

shton do numr te shuma


tregon te numri tjetr
prserit sipas prmasave
t matrics

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

push esi, ecx

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.

MASM gjeneron kodin q duket me gold:


ArraySum PROC
push esi
push ecx
.
.
pop ecx
pop esi
ret
ArraySum ENDP

51
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

Kur nuk duhet t bjm push nj regj


regjist
istr
Shuma e tre regjistrave ruhet n EAX n rreshtin (3), por
instruksioni POP e zevndson at me vlern fillestare t EAX
n rreshtin (4):
SumOf PROC
push eax
add eax,ebx
add eax,ecx
pop eax
ret
SumOf ENDP

;
;
;
;
;

shuma e tre numrave t plot


1
2
3
4

52
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

N vazhdim

Lidhja me nj Librari t Jashtme


Libraria e Lidhur Book
Operime stive(stack)
Prcaktimi dhe prdorimi i proedurave
Projektimi i programit duke prdorur Proedurat

53
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

Projektimi i programit duke prdorur


Proedurat
Top-Down Design (Zbrthimi funksional) prfshin sa
vijojn:
dizenjoni programin tuaj para se t filloni t kodoni
ndani detyrat e mdha n m t vogla
prdorni strukture hierarkike t bazuar n thirrje
proedure
testoni ve proedurat individuale

54
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

Programii Mbledhja e Numrave t plot(1 nga 4)


Program
Prshkrimi: Shkruani nj program q nxit prdoruesin
pr kalimin shum numrave t plot 32-bit, i ruan ato n
nj matric, llogarit shumn e matrics, dhe e shfaq at
n ekran.
Hapat kryesor:

Nxit prdoruesin pr kalimin shum numrave

Llogarit shumn e matrics

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)

Kalo nj nr t plot me shenj: 550


Kalo nj nr t plot me shenj : -23
Kalo nj nr t plot me shenj : -96
Shuma e numrave t plot sht: +431

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

Prdorni librarin Irvine32 pr t gjitha H/D standarte


dhe konvertimet e t dhenave
Deshironi t dini m shum? Studioni librarin me
kodin burimor n dosjen c:\Irvine\Examples\Lib32

59
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

Fund

60
Pergatiti: Roland Vasili Bazuar n Slidet e Kip Irvine

You might also like