SlideShare a Scribd company logo
R. Vasili - Gjuha Assembly – Universiteti i Gjirokastrës
«Ε. Çabej»
Simestri I – Teknololgji Informacioni
Leksione 5 dhe 6
R. Vasili - Gjuha Assembly – Universiteti i Gjirokastrës
«Ε. Çabej»
Simestri I – Teknololgji Informacioni
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
2
Çeshtjet që do trajtohen
• Elementet bazë të gjuhës Assembly
• Shembull: Mbledhje dhe Zbritje me numra të plotë
• Asemblimi, Lidhja, dhe Ekzekutimi i Programeve
• Përcaktimi i të Dhënave
• Konstante Simbolike
• Programimi në Mënyrë Reale Adresimi(Real-
Address Mode)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
3
Elementet Bazë të gjuhës Assembly
• Konstantet Integer
• Shprehjet Integer
• Konstantet e tipit karakter dhe string
• Fjalët e Rezervuara dhe identifikuesit
• Direktivat dhe instruksionet
• Etiketat (Labels)
• Mnemonikat dhe Operandët
• Komentet
• Shembuj
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
4
Konstatet Integer
• Shenjat e paraprirë(me opsion) + ose –
• Shifrat binare, dhjetore, hexadecimale, ose
oktale
• Karakterët unik të bazës:
• h – hexadecimal
• d – dhjetor
• b – binar
• r – real i koduar
Shembuj: 30d, 6Ah, 42, 1101b
Numrat Hexadecimal fillojnë me shkronjë: 0A5h
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
5
Shprehjet Integer
• Operatorët dhe nivelet e përparësisë(precedence):
• Shembuj:
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
6
Konstantet e tipit Karakter dhe String
• Mbyllni karakterin në thonjëza teke ose dopjo
• 'A', "x"
• Karakteri ASCII = 1 byte
• Mbyllni stringjet në thonjëza teke ose dopjo
• "ABC"
• 'xyz'
• Çdo karakter ka një byte të vetëm
• Thonjëza të Ndërthurur(Embedded):
• „Thuaj “Natën e Mirë,” Faleminderit'
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
7
Fjalë të Rezervuara dhe Identifikues
• Fjalët e Rezervuara nuk mund të përdoren si identifikues
• Mnemonika Instruksioni, direktiva, tipe atributesh,
operatorë, simbole të parapërcaktuar
• Shiko MASM reference
• Identifikuesit
• 1-247 karaktere, duke përfshirë shifrat
• Nuk merret parasysh nëse shkronjat janë të medha apo të
vogla
• Karakteri i parë duhet të jetë shkronjë, _, @, ?, ose $
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
8
Direktiva
• Komanda që njihen dhe veprojnë mbi asembluesin
• Nuk janë pjesë e setit të instruksioneve të Intel-it
• Përdoren për deklarim kodi, hapësire të dhenash,
zgjedhin modelin e kujtesës, deklarojnë proçedurat,
etj.
• Nuk merret parasysh nëse shkronjat janë të medha
apo të vogla
• Asemblues të ndryshëm kanë direktiva të
ndryshme
• Për shembull NASM nuk është i njëjtë me MASM.
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
9
Instruksione
• Asemblohen në kod makine nga asembluesi
• Ekzekutohen gjatë kohes runtime nga CPU-ja
• Ne do përdorim setin e instruksioneve Intel IA-32
• Një instruksion përmban:
• Etiketën(Label) (me opsion)
• Mnemonikën(Mnemonic) (nevojitet)
• Operandë(Operand) (varet nga instruksioni)
• Komente(Comment) (me opsion)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
10
Etiketat
• Vepron si shenues vendi
• Shenon adresën (ofsetin) e kodit dhe të dhënave
• Ndjekin rregullat e identifikuesve
• Etiketa Data
• Duhet të jenë unike
• shembull: myArray (nut ndiqet nga dy pika)
• Etiketa Code
• Objektivi i instruksioneve jump dhe loop
• shembull: L1: (i ndjekur nga dy pika)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
11
Mnemonikat dhe Operandët
• Mnemonika Instruksioni
• ndihmesa kujtese
• shembuj: MOV, ADD, SUB, MUL, INC, DEC
• Operandët
• konstante
• shprehje konstante
• regjistër
• kujtesë (data label)
Konstantet dhe shprehjet konstante shpesh quhen vlera
imediate (immediate values)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
12
Comentet
• Komentet janë të dobishme!
• sqarojnë pikësynimet e programuesit
• se kur ato shkruhen, dhe prej kujt
• informacione rishikimi
• teknika kodimi të ndërlikuara
• sqarime specifike për aplicacionin
• Komente të një rreshti të vetëm(Single-line)
• Fillojnë me pikëpresje(;)
• Komente me shumë rreshta(Multi-line)
• Fillojnë me direktivën COMMENT dhe një karakter të
zgjedhur nga programuesi
• Përfundojnë me të njëjtin karakter të zgjedhur nga
përdoruesi
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
13
Shembuj të Formës së Instruksioneve
• Pa operandë
• stc ; vendos flamurin Carry
• Një operand
• inc eax ; regjistër
• inc myByte ; kujtesë
• Dy operandë
• add ebx,ecx ; regjistër, regjistër
• sub myByte,25 ; kujtesë, konstante
• add eax,36 * 25 ; regjistër, shprehje konstante
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
14
Në Vazhdim
• Elementet bazë të gjuhës Assembly
• Shembull: Mbledhje dhe Zbritje me numra të plotë
• Asemblimi, Lidhja, dhe Ekzekutimi i Programeve
• Përcaktimi i të Dhënave
• Konstante Simbolike
• Programimi në Mënyrë Reale Adresimi(Real-Address
Mode)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
15
Shembull: Mbledhje dhe Zbritje me numra të plotë
TITULLI Mbledhje dhe Zbritje (AddSub.asm)
; Ky program shton dhe zbret numra të plotë 32-bit.
INCLUDE Irvine32.inc
.code
main PROC
mov eax,10000h ; EAX = 10000h
add eax,40000h ; EAX = 50000h
sub eax,20000h ; EAX = 30000h
call DumpRegs ; afisho regjistrat
exit
main ENDP
END main
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
16
Shembull Daljeje(output)
Programi output, shfaq regjistrat dhe flamujtë:
EAX=00030000 EBX=7FFDF000 ECX=00000101 EDX=FFFFFFFF
ESI=00000000 EDI=00000000 EBP=0012FFF0 ESP=0012FFC4
EIP=00401024 EFL=00000206 CF=0 SF=0 ZF=0 OF=0
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
17
Standarte kodimi të sugjeruara (1 nga 2)
• Disa përafrime të kapitalizimit(shkruajtje me
shkronja të mëdha)
• mos kapitalizo asgjë
• kapitalizo gjithçka
• kapitalizo gjithë fjalët e rezervuara, duke përfshirë
mnemonikat e instruksioneve dhe emrat e regjistrave
• kapitalizo vetëm direktivat dhe operatorët
• Sugjerime të tjera
• Emrat e identifikuesve të jenë përshkrues
• lini hapësira përreth operatorëve
• lini rreshta bosh midis proçedurave
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
18
• Dhëmbëzime dhe hapësira boshe
• etiketat e segmentit code dhe data – pa dhembëzim
• instruksionet e ekzekutueshme – futuni 4-5 hapësira
• komentet: fillojini në kolonën 40-45, të rradhitura
vertikalisht
• 1-3 hapësira midis instruksioneve dhe operandëve të
tyre
• P.sh.: mov ax,bx
• 1-2 rreshta bosh midis proçedurave
Standarte kodimi të sugjeruara (2 nga 2)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
19
Version Alternativ i AddSub
TITLE Mbledhje dhe Zbritje (AddSubAlt.asm)
; Ky program shton dhe zbret numra të plotë 32-bit.
.386
.MODEL flat,stdcall
.STACK 4096
ExitProcess PROTO, dwExitCode:DWORD
DumpRegs PROTO
.code
main PROC
mov eax,10000h ; EAX = 10000h
add eax,40000h ; EAX = 50000h
sub eax,20000h ; EAX = 30000h
call DumpRegs
INVOKE ExitProcess,0
main ENDP
END main
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
20
Shabllon Programi
TITLE Program Shabllon (Template.asm)
; Pershkrimi i Programit :
; Autori:
; Data e krijimit:
; Rishikimi(versioni):
; Data: Modifikuar nga:
INCLUDE Irvine32.inc
.data
; (vendos ketu variablat)
.code
main PROC
; (ndërfut ketu instruksionët e ekzekutueshme)
exit
main ENDP
; (ndërfut këtu proçedura shtesë)
END main
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
21
Në Vazhdim
• Elementet bazë të gjuhës Assembly
• Shembull: Mbledhje dhe Zbritje me numra të plotë
• Asemblimi, Lidhja, dhe Ekzekutimi i Programeve
• Përcaktimi i të Dhënave
• Konstante Simbolike
• Programimi në Mënyrë Reale Adresimi(Real-Address
Mode)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
22
Asemblimi, Lidhja, dhe Ekzekutimi i Programeve
• Cikli Assemble-Link-Execute
• make32.bat
• Skedar Liste(Listing File)
• Skedari i Skemës(Map file)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
23
Cikli Assemble-Link Execute
• Diagrama e mëposhtme përshkruan hapat për krijimin a programeve
burimorë duke ekzekutuar programet e kompiluara.
• Nëse kodi burimor modifikohet, Hapat 2 deri 4 mund të përsëritën.
Source
File
Object
File
Listing
File
Link
Library
Executable
File
Map
File
Output
Step 1: text editor
Step 2:
assembler
Step 3:
linker
Step 4:
OS loader
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
24
Skedar Liste
• Përdoreni për të parë si kompilohen programi
• Përmban
• kodin burimor(source code)
• adresat
• kodi objekt (machine language)
• emrat e segmenteve
• simbolet(variabla, proçedura dhe konstante)
• Shembull: addSub.lst
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
25
Skedar skeme(Map File)
• Informacion për çdo segment programi:
• adresë startimi
• adresë përfundimi
• madhësia(size)
• tipi i segmentit
• Shembull: addSub.map (versioni 16-bit)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
26
Në Vazhdim
• Elementet bazë të gjuhës Assembly
• Shembull: Mbledhje dhe Zbritje me numra të plotë
• Asemblimi, Lidhja, dhe Ekzekutimi i Programeve
• Përcaktimi i të Dhënave
• Konstante Simbolike
• Programimi në Mënyrë Reale Adresimi(Real-Address
Mode)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
27
Përcaktimi i të Dhënave
• Tipe të brëndshme të Dhënash
• Instruksione Përcaktimi të Dhënash
• Përcaktimi i të Dhënave BYTE dhe SBYTE
• Përcaktimi i të Dhënave WORD dhe SWORD
• Përcaktimi i të Dhënave DWORD dhe SDWORD
• Përcaktimi i të Dhënave QWORD
• Përcaktimi i të Dhënave TBYTE
• Përcaktimi i të Dhënave Numra Realë
• Rënditja Little Endian
• Shtimi i Variablave në Programin AddSub
• Deklarimi i të Dhënave të Painicializuara
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
28
Tipe të brëndshme të Dhenash (1 nga 2)
• BYTE, SBYTE
• 8-bit numër i plote pa shenjë; 8-bit numër i plote
me shenjë
• WORD, SWORD
• 16-bit numër i plote me & pa shenjë
• DWORD, SDWORD
• 32-bit numër i plote me & pa shenjë
• QWORD
• 64-bit numër i plote
• TBYTE
• 80-bit numër i plote
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
29
• REAL4
• 4-byte IEEE numër i shkurtër(short) real
• REAL8
• 8-byte IEEE numër i gjatë(long) real
• REAL10
• 10-byte IEEE numër i zgjeruar(extended) real
Tipe të brëndshme të Dhenash (2 nga 2)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
30
Instruksione Përcaktimi të Dhënash
• Një set për paraqitjën dhe përcaktimin e të dhënave të
vendosura në hapësirën e kujtesës për një variabël.
• Mund të përcaktojë(me opsion) një emër (etiketë) në të dhëna
• Sintaksa:
[emri] direktiva inicializuesi [,inicializues] . . .
vlera1 BYTE 10
• Të gjithë inicializuesit përshtatën në të dhëna binare në kujtesë
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
31
Përcaktimi i të Dhënave BYTE dhe SBYTE
value1 BYTE 'A' ; konstante karakter
value2 BYTE 0 ; byte më i vogël pa shënjë
value3 BYTE 255 ; byte më i madh pa shënjë
value4 SBYTE -128 ; byte më i vogël me shënjë
value5 SBYTE +127 ; byte më i madh me shënjë
value6 BYTE ? ; byte i painicializuar
Secili nga sa vijojnë përcaktojnë një byte të thjeshtë hapësirë:
• MASM nuk ju parandalon nga inicializimi i një BYTE me vlerë
negative, por ai konsiderohet stil i keq.
• Nëse deklaroni një variabël SBYTE, korrigjuesi i gabimeve
(debugger) i Microsoft-it automatikisht do afishojë vlerën e tij
dhjetore me shenjë para.
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
32
Përcaktimi i Matricave me të Dhëna Byte
list1 BYTE 10,20,30,40
list2 BYTE 10,20,30,40
BYTE 50,60,70,80
BYTE 81,82,83,84
list3 BYTE ?,32,41h,00100010b
list4 BYTE 0Ah,20h,‘A’,22h
Shembuj përdorimi të shumë inicializuesve:
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
33
Përcaktimi i të Dhënave String (1 nga 3)
• Një string implementohet si një matricë karakteresh
• Pë lehtësi, zakonisht mbyllën në thonjëza
• Zakonisht ato përfundojnë me null
• Shembuj:
str1 BYTE “Shtypni emrin",0
str2 BYTE 'Error: halting program',0
str3 BYTE 'A','E','I','O','U'
greeting BYTE "Welcome to the Encryption Demo program "
BYTE "created by Kip Irvine.",0
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
34
Përcaktimi i të Dhënave String (2 nga 3)
• Për të vazhduar një string të vetëm përgjatë shumë
rreshtave, përfundoni çdo rresht me presje:
menu BYTE "Checking Account",0dh,0ah,0dh,0ah,
"1. Create a new account",0dh,0ah,
"2. Open an existing account",0dh,0ah,
"3. Credit the account",0dh,0ah,
"4. Debit the account",0dh,0ah,
"5. Exit",0dh,0ah,
"Choice> ",0
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
35
Përcaktimi i të Dhënave String (3 nga 3)
• Sekuenca e karaktereve End-of-line :
• 0Dh = carriage return
• 0Ah = line feed
str1 BYTE "Enter your name: ",0Dh,0Ah
BYTE "Enter your address: ",0
newLine BYTE 0Dh,0Ah,0
Ideja: Përcakto të gjitha stringjet e përdorur nga programet
tuaja në të njejtën zonë të segmentit të të dhënave.
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
36
Përdorimi i Operatorit DUP
• Përdor DUP për të alokuar (krijuar hapësirë për) një
matrice(array) ose string. Sintaksa:
numeruesi DUP ( argumenti )
• Numëruesi dhe argumenti duhet të jenë konstante
ose shprehje konstante
var1 BYTE 20 DUP(0) ; 20 bytes, të gjitha zero
var2 BYTE 20 DUP(?) ; 20 bytes, të painicializuar
var3 BYTE 4 DUP("STACK") ; 20 bytes: "STACKSTACKSTACKSTACK"
var4 BYTE 10,3 DUP(0),20 ; 5 bytes
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
37
Përcaktimi i të Dhënave WORD dhe SWORD
• Përcaktime Hapësire për numra të plotë 16-bit
• ose dopjo karaktere
• vlera të thjeshta ose shumëfishe
word1 WORD 65535 ; vlera më e madhe pa shenjë
word2 SWORD –32768 ; vlera më e vogël me shenjë
word3 WORD ? ; e painicializuar, pa shenjë
word4 WORD "AB" ; dopjo karaktere
myList WORD 1,2,3,4,5 ; matricë(array) me words
array WORD 5 DUP(?) ; matricë e painicializuar
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
38
Përcaktimi i të Dhënave DWORD dhe SDWORD
val1 DWORD 12345678h ; pa shenjë
val2 SDWORD –2147483648 ; me shenjë
val3 DWORD 20 DUP(?) ; matrice pa shenjë
val4 SDWORD –3,–2,–1,0,1 ; matrice me shenjë
Përcaktime Hapësire për numra të plotë 32-bit me & pa
shenjë:
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
39
Përcaktimi i të Dhënave QWORD, TBYTE, Reale
quad1 QWORD 1234567812345678h
val1 TBYTE 1000000000123456789Ah
rVal1 REAL4 -2.1
rVal2 REAL8 3.2E-260
rVal3 REAL10 4.6E+4096
ShortArray REAL4 20 DUP(0.0)
Përcaktime Hapësire për vlera quadwords,
tenbyte, dhe numra realë:
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
40
Rënditja Little Endian
• Të gjithë tipet e të dhënave më të mëdha se një byte
ruajnë byte-t e tyre individual në rend të kundërt(reverse
order). Byte-i më pak i rëndësishëm ndeshet në adresën
e parë (më të ulët) të kujtesës.
• Shembull:
val1 DWORD 12345678h
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
41
Shtim Variablash në AddSub
TITLE Mbledhje dhe Zbritje, Versioni 2 (AddSub2.asm)
; Ky program shton dhe zbret numra të plotë
; 32-bit pa shënjë dhe ruan shumën në një variabël.
INCLUDE Irvine32.inc
.data
val1 DWORD 10000h
val2 DWORD 40000h
val3 DWORD 20000h
finalVal DWORD ?
.code
main PROC
mov eax,val1 ; nis me 10000h
add eax,val2 ; shton 40000h
sub eax,val3 ; zbret 20000h
mov finalVal,eax ; ruan rezultatin (30000h)
call DumpRegs ; afishon regjistrat
exit
main ENDP
END main
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
42
Deklarim të Dhënash të Painicializuara
• Përdor direktivën .data? për të deklaruar një segment të
painicializuar të dhënash:
P.sh.:
.data
smallArray DWORD 10 DUP(0)
.data?
bigArray DWORD 5000 DUP(?)
P.sh.:
.data
smallArray DWORD 10 DUP(0)
bigArray DWORD 5000 DUP(?)
• Brënda segmentit, deklaroni variablat me inicializuesit “?” :
smallArray DWORD 10 DUP(?)
Avantazhe: madhësia e skedarit të programeve EXE zvogëlohet.
Në këtë rast, kursejmë 4 x 5000 bytes!
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
43
Në Vazhdim
• Elementet bazë të gjuhës Assembly
• Shembull: Mbledhje dhe Zbritje me numra të plotë
• Asemblimi, Lidhja, dhe Ekzekutimi i Programeve
• Përcaktimi i të Dhënave
• Konstante Simbolike
• Programimi në Mënyrë Reale Adresimi(Real-Address
Mode)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
44
Konstante Simbolike
• Direktiva e Shenjës së Barazimit
• Llogaritja e Madhësisë së Matricave dhe Stringjeve
• Direktiva ByteEQU
• Direktiva TEXTEQU
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
45
Direktiva e Shenjës së Barazimit
• emri = shprehje
• Shprehja është një 32-bit integer (shprehje ose
konstante)
• Mund të ripërcaktohet
• emri quhet konstante simbolike
• Përdorimi i simboleve është një stil i mirë programimi
COUNT = 500
.
.
mov al,COUNT
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
46
Llogaritja e Madhësisë së një Matrice Byte
• Numeruesi i pozicionit aktual : $
• heq adresat e listës
• diferenca është numri i byte-ve
list BYTE 10,20,30,40
ListSize = ($ - list)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
47
Llogaritja e Madhësisë së një Matrice Word
Pjestoni numrin total të byte-ve me 2 (madhësia e një
word)
list WORD 1000h,2000h,3000h,4000h
ListSize = ($ - list) / 2
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
48
Llogaritja e Madhësisë së një Matrice Doubleword
Pjestoni numrin total të byte-ve me 4 (madhësia e një
doubleword)
list DWORD 1,2,3,4
ListSize = ($ - list) / 4
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
49
Direktiva EQU
• Përcakton një simbol ose si integer ose si shprehje teksti.
• emri EQU shprehje
• emri EQU simbol
• emri EQU <teksti>
• Nuk mund të ripërcaktohet
PI EQU <3.1416>
pressKey EQU <“Shtypni një tast për të vazhduar...",0>
.data
prompt BYTE pressKey
matrix1 EQU 10 * 10
matrix2 EQU <10 * 10>
.data
M1 WORD matrix1 ; 100
M2 WORD matrix2 ; 10 * 10
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
50
Direktiva TEXTEQU
• Përcakton një simbol ose si integer ose si shprehje text.
• emri TEXTEQU <teksti>
• emri TEXTEQU textmacro
• emri TEXTEQU %constExpr
• Thirret një text macro
• Mund të ripërcaktohet
continueMsg TEXTEQU <“Dëshironi të vayhdini (PO/JO)?">
rowSize = 5
.data
prompt1 BYTE continueMsg
count TEXTEQU %(rowSize * 2) ; vlerëson shprehjen
move TEXTEQU <mov>
setupAL TEXTEQU <move al,count>
.code
setupAL ; gjenëron: "mov al,10"
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
51
Në Vazhdim
• Elementet bazë të gjuhës Assembly
• Shembull: Mbledhje dhe Zbritje me numra të plotë
• Asemblimi, Lidhja, dhe Ekzekutimi i Programeve
• Përcaktimi i të Dhënave
• Konstante Simbolike
• Programimi në Mënyrë Reale Adresimi(Real-
Address Mode)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
52
Programimi në Mënyrë Reale Adresimi(1 nga 2)
• Gjenero Programe 16-bit MS-DOS
• Avantazhet
• Mundëson thirrjen e funksioneve MS-DOS dhe BIOS
• Nuk ka kufizime në aksesin në kujtesë
• Disadvantazhe
• Duhet të jetë i informuar edhe me segmentin edhe me
ofsetin
• Nuk mund të thërrasë funksione Win32 (Windows 95
dhe më të reja)
• Kujtesë e kufizuar në 640K për programin
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
53
• Kërkesat
• INCLUDE Irvine16.inc
• Inicializimi i DS në segmentin e të
dhënave:
mov ax,@data
mov ds,ax
Programimi në Mënyrë Reale Adresimi(1 nga 2)
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
54
Mbledhje dhe Zbritje, Versioni 16-Bit
TITLE Mbledhje dhe Zbritje, Versioni 2 (AddSub2r.asm)
INCLUDE Irvine16.inc
.data
val1 DWORD 10000h
val2 DWORD 40000h
val3 DWORD 20000h
finalVal DWORD ?
.code
main PROC
mov ax,@data ; inicializo DS
mov ds,ax
mov eax,val1 ; merr vlerën e parë
add eax,val2 ; shto vlerën e dytë
sub eax,val3 ; zbrit vlerën e tretë
mov finalVal,eax ; ruaj rezultatin
call DumpRegs ; afisho regjistrat
exit
main ENDP
END main
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
55
Përmbledhje
• Shprehje Integer, konstante karakter
• Direktiva – e interpretuar nga asembluesi
• Instruksioni – ekzekutohet në kohën runtime
• Segmentet code, data, dhe stack
• Skedarët source, listing, object, map dhe të
ekzekutueshëm
• Direktiva Përcaktimi të Dhënash :
• BYTE, SBYTE, WORD, SWORD, DWORD, SDWORD,
QWORD, TBYTE, REAL4, REAL8, and REAL10
• operatori DUP, numeruesi i pozicionit aktual($)
• Konstante Simbolike
• EQU dhe TEXTEQU
Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine
56
46 69 6E 69 73

More Related Content

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
Marius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
Expeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
Christy Abraham Joy
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
MindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Leksione 5 & 6

  • 1. R. Vasili - Gjuha Assembly – Universiteti i Gjirokastrës «Ε. Çabej» Simestri I – Teknololgji Informacioni Leksione 5 dhe 6 R. Vasili - Gjuha Assembly – Universiteti i Gjirokastrës «Ε. Çabej» Simestri I – Teknololgji Informacioni
  • 2. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 2 Çeshtjet që do trajtohen • Elementet bazë të gjuhës Assembly • Shembull: Mbledhje dhe Zbritje me numra të plotë • Asemblimi, Lidhja, dhe Ekzekutimi i Programeve • Përcaktimi i të Dhënave • Konstante Simbolike • Programimi në Mënyrë Reale Adresimi(Real- Address Mode)
  • 3. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 3 Elementet Bazë të gjuhës Assembly • Konstantet Integer • Shprehjet Integer • Konstantet e tipit karakter dhe string • Fjalët e Rezervuara dhe identifikuesit • Direktivat dhe instruksionet • Etiketat (Labels) • Mnemonikat dhe Operandët • Komentet • Shembuj
  • 4. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 4 Konstatet Integer • Shenjat e paraprirë(me opsion) + ose – • Shifrat binare, dhjetore, hexadecimale, ose oktale • Karakterët unik të bazës: • h – hexadecimal • d – dhjetor • b – binar • r – real i koduar Shembuj: 30d, 6Ah, 42, 1101b Numrat Hexadecimal fillojnë me shkronjë: 0A5h
  • 5. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 5 Shprehjet Integer • Operatorët dhe nivelet e përparësisë(precedence): • Shembuj:
  • 6. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 6 Konstantet e tipit Karakter dhe String • Mbyllni karakterin në thonjëza teke ose dopjo • 'A', "x" • Karakteri ASCII = 1 byte • Mbyllni stringjet në thonjëza teke ose dopjo • "ABC" • 'xyz' • Çdo karakter ka një byte të vetëm • Thonjëza të Ndërthurur(Embedded): • „Thuaj “Natën e Mirë,” Faleminderit'
  • 7. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 7 Fjalë të Rezervuara dhe Identifikues • Fjalët e Rezervuara nuk mund të përdoren si identifikues • Mnemonika Instruksioni, direktiva, tipe atributesh, operatorë, simbole të parapërcaktuar • Shiko MASM reference • Identifikuesit • 1-247 karaktere, duke përfshirë shifrat • Nuk merret parasysh nëse shkronjat janë të medha apo të vogla • Karakteri i parë duhet të jetë shkronjë, _, @, ?, ose $
  • 8. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 8 Direktiva • Komanda që njihen dhe veprojnë mbi asembluesin • Nuk janë pjesë e setit të instruksioneve të Intel-it • Përdoren për deklarim kodi, hapësire të dhenash, zgjedhin modelin e kujtesës, deklarojnë proçedurat, etj. • Nuk merret parasysh nëse shkronjat janë të medha apo të vogla • Asemblues të ndryshëm kanë direktiva të ndryshme • Për shembull NASM nuk është i njëjtë me MASM.
  • 9. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 9 Instruksione • Asemblohen në kod makine nga asembluesi • Ekzekutohen gjatë kohes runtime nga CPU-ja • Ne do përdorim setin e instruksioneve Intel IA-32 • Një instruksion përmban: • Etiketën(Label) (me opsion) • Mnemonikën(Mnemonic) (nevojitet) • Operandë(Operand) (varet nga instruksioni) • Komente(Comment) (me opsion)
  • 10. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 10 Etiketat • Vepron si shenues vendi • Shenon adresën (ofsetin) e kodit dhe të dhënave • Ndjekin rregullat e identifikuesve • Etiketa Data • Duhet të jenë unike • shembull: myArray (nut ndiqet nga dy pika) • Etiketa Code • Objektivi i instruksioneve jump dhe loop • shembull: L1: (i ndjekur nga dy pika)
  • 11. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 11 Mnemonikat dhe Operandët • Mnemonika Instruksioni • ndihmesa kujtese • shembuj: MOV, ADD, SUB, MUL, INC, DEC • Operandët • konstante • shprehje konstante • regjistër • kujtesë (data label) Konstantet dhe shprehjet konstante shpesh quhen vlera imediate (immediate values)
  • 12. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 12 Comentet • Komentet janë të dobishme! • sqarojnë pikësynimet e programuesit • se kur ato shkruhen, dhe prej kujt • informacione rishikimi • teknika kodimi të ndërlikuara • sqarime specifike për aplicacionin • Komente të një rreshti të vetëm(Single-line) • Fillojnë me pikëpresje(;) • Komente me shumë rreshta(Multi-line) • Fillojnë me direktivën COMMENT dhe një karakter të zgjedhur nga programuesi • Përfundojnë me të njëjtin karakter të zgjedhur nga përdoruesi
  • 13. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 13 Shembuj të Formës së Instruksioneve • Pa operandë • stc ; vendos flamurin Carry • Një operand • inc eax ; regjistër • inc myByte ; kujtesë • Dy operandë • add ebx,ecx ; regjistër, regjistër • sub myByte,25 ; kujtesë, konstante • add eax,36 * 25 ; regjistër, shprehje konstante
  • 14. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 14 Në Vazhdim • Elementet bazë të gjuhës Assembly • Shembull: Mbledhje dhe Zbritje me numra të plotë • Asemblimi, Lidhja, dhe Ekzekutimi i Programeve • Përcaktimi i të Dhënave • Konstante Simbolike • Programimi në Mënyrë Reale Adresimi(Real-Address Mode)
  • 15. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 15 Shembull: Mbledhje dhe Zbritje me numra të plotë TITULLI Mbledhje dhe Zbritje (AddSub.asm) ; Ky program shton dhe zbret numra të plotë 32-bit. INCLUDE Irvine32.inc .code main PROC mov eax,10000h ; EAX = 10000h add eax,40000h ; EAX = 50000h sub eax,20000h ; EAX = 30000h call DumpRegs ; afisho regjistrat exit main ENDP END main
  • 16. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 16 Shembull Daljeje(output) Programi output, shfaq regjistrat dhe flamujtë: EAX=00030000 EBX=7FFDF000 ECX=00000101 EDX=FFFFFFFF ESI=00000000 EDI=00000000 EBP=0012FFF0 ESP=0012FFC4 EIP=00401024 EFL=00000206 CF=0 SF=0 ZF=0 OF=0
  • 17. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 17 Standarte kodimi të sugjeruara (1 nga 2) • Disa përafrime të kapitalizimit(shkruajtje me shkronja të mëdha) • mos kapitalizo asgjë • kapitalizo gjithçka • kapitalizo gjithë fjalët e rezervuara, duke përfshirë mnemonikat e instruksioneve dhe emrat e regjistrave • kapitalizo vetëm direktivat dhe operatorët • Sugjerime të tjera • Emrat e identifikuesve të jenë përshkrues • lini hapësira përreth operatorëve • lini rreshta bosh midis proçedurave
  • 18. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 18 • Dhëmbëzime dhe hapësira boshe • etiketat e segmentit code dhe data – pa dhembëzim • instruksionet e ekzekutueshme – futuni 4-5 hapësira • komentet: fillojini në kolonën 40-45, të rradhitura vertikalisht • 1-3 hapësira midis instruksioneve dhe operandëve të tyre • P.sh.: mov ax,bx • 1-2 rreshta bosh midis proçedurave Standarte kodimi të sugjeruara (2 nga 2)
  • 19. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 19 Version Alternativ i AddSub TITLE Mbledhje dhe Zbritje (AddSubAlt.asm) ; Ky program shton dhe zbret numra të plotë 32-bit. .386 .MODEL flat,stdcall .STACK 4096 ExitProcess PROTO, dwExitCode:DWORD DumpRegs PROTO .code main PROC mov eax,10000h ; EAX = 10000h add eax,40000h ; EAX = 50000h sub eax,20000h ; EAX = 30000h call DumpRegs INVOKE ExitProcess,0 main ENDP END main
  • 20. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 20 Shabllon Programi TITLE Program Shabllon (Template.asm) ; Pershkrimi i Programit : ; Autori: ; Data e krijimit: ; Rishikimi(versioni): ; Data: Modifikuar nga: INCLUDE Irvine32.inc .data ; (vendos ketu variablat) .code main PROC ; (ndërfut ketu instruksionët e ekzekutueshme) exit main ENDP ; (ndërfut këtu proçedura shtesë) END main
  • 21. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 21 Në Vazhdim • Elementet bazë të gjuhës Assembly • Shembull: Mbledhje dhe Zbritje me numra të plotë • Asemblimi, Lidhja, dhe Ekzekutimi i Programeve • Përcaktimi i të Dhënave • Konstante Simbolike • Programimi në Mënyrë Reale Adresimi(Real-Address Mode)
  • 22. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 22 Asemblimi, Lidhja, dhe Ekzekutimi i Programeve • Cikli Assemble-Link-Execute • make32.bat • Skedar Liste(Listing File) • Skedari i Skemës(Map file)
  • 23. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 23 Cikli Assemble-Link Execute • Diagrama e mëposhtme përshkruan hapat për krijimin a programeve burimorë duke ekzekutuar programet e kompiluara. • Nëse kodi burimor modifikohet, Hapat 2 deri 4 mund të përsëritën. Source File Object File Listing File Link Library Executable File Map File Output Step 1: text editor Step 2: assembler Step 3: linker Step 4: OS loader
  • 24. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 24 Skedar Liste • Përdoreni për të parë si kompilohen programi • Përmban • kodin burimor(source code) • adresat • kodi objekt (machine language) • emrat e segmenteve • simbolet(variabla, proçedura dhe konstante) • Shembull: addSub.lst
  • 25. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 25 Skedar skeme(Map File) • Informacion për çdo segment programi: • adresë startimi • adresë përfundimi • madhësia(size) • tipi i segmentit • Shembull: addSub.map (versioni 16-bit)
  • 26. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 26 Në Vazhdim • Elementet bazë të gjuhës Assembly • Shembull: Mbledhje dhe Zbritje me numra të plotë • Asemblimi, Lidhja, dhe Ekzekutimi i Programeve • Përcaktimi i të Dhënave • Konstante Simbolike • Programimi në Mënyrë Reale Adresimi(Real-Address Mode)
  • 27. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 27 Përcaktimi i të Dhënave • Tipe të brëndshme të Dhënash • Instruksione Përcaktimi të Dhënash • Përcaktimi i të Dhënave BYTE dhe SBYTE • Përcaktimi i të Dhënave WORD dhe SWORD • Përcaktimi i të Dhënave DWORD dhe SDWORD • Përcaktimi i të Dhënave QWORD • Përcaktimi i të Dhënave TBYTE • Përcaktimi i të Dhënave Numra Realë • Rënditja Little Endian • Shtimi i Variablave në Programin AddSub • Deklarimi i të Dhënave të Painicializuara
  • 28. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 28 Tipe të brëndshme të Dhenash (1 nga 2) • BYTE, SBYTE • 8-bit numër i plote pa shenjë; 8-bit numër i plote me shenjë • WORD, SWORD • 16-bit numër i plote me & pa shenjë • DWORD, SDWORD • 32-bit numër i plote me & pa shenjë • QWORD • 64-bit numër i plote • TBYTE • 80-bit numër i plote
  • 29. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 29 • REAL4 • 4-byte IEEE numër i shkurtër(short) real • REAL8 • 8-byte IEEE numër i gjatë(long) real • REAL10 • 10-byte IEEE numër i zgjeruar(extended) real Tipe të brëndshme të Dhenash (2 nga 2)
  • 30. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 30 Instruksione Përcaktimi të Dhënash • Një set për paraqitjën dhe përcaktimin e të dhënave të vendosura në hapësirën e kujtesës për një variabël. • Mund të përcaktojë(me opsion) një emër (etiketë) në të dhëna • Sintaksa: [emri] direktiva inicializuesi [,inicializues] . . . vlera1 BYTE 10 • Të gjithë inicializuesit përshtatën në të dhëna binare në kujtesë
  • 31. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 31 Përcaktimi i të Dhënave BYTE dhe SBYTE value1 BYTE 'A' ; konstante karakter value2 BYTE 0 ; byte më i vogël pa shënjë value3 BYTE 255 ; byte më i madh pa shënjë value4 SBYTE -128 ; byte më i vogël me shënjë value5 SBYTE +127 ; byte më i madh me shënjë value6 BYTE ? ; byte i painicializuar Secili nga sa vijojnë përcaktojnë një byte të thjeshtë hapësirë: • MASM nuk ju parandalon nga inicializimi i një BYTE me vlerë negative, por ai konsiderohet stil i keq. • Nëse deklaroni një variabël SBYTE, korrigjuesi i gabimeve (debugger) i Microsoft-it automatikisht do afishojë vlerën e tij dhjetore me shenjë para.
  • 32. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 32 Përcaktimi i Matricave me të Dhëna Byte list1 BYTE 10,20,30,40 list2 BYTE 10,20,30,40 BYTE 50,60,70,80 BYTE 81,82,83,84 list3 BYTE ?,32,41h,00100010b list4 BYTE 0Ah,20h,‘A’,22h Shembuj përdorimi të shumë inicializuesve:
  • 33. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 33 Përcaktimi i të Dhënave String (1 nga 3) • Një string implementohet si një matricë karakteresh • Pë lehtësi, zakonisht mbyllën në thonjëza • Zakonisht ato përfundojnë me null • Shembuj: str1 BYTE “Shtypni emrin",0 str2 BYTE 'Error: halting program',0 str3 BYTE 'A','E','I','O','U' greeting BYTE "Welcome to the Encryption Demo program " BYTE "created by Kip Irvine.",0
  • 34. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 34 Përcaktimi i të Dhënave String (2 nga 3) • Për të vazhduar një string të vetëm përgjatë shumë rreshtave, përfundoni çdo rresht me presje: menu BYTE "Checking Account",0dh,0ah,0dh,0ah, "1. Create a new account",0dh,0ah, "2. Open an existing account",0dh,0ah, "3. Credit the account",0dh,0ah, "4. Debit the account",0dh,0ah, "5. Exit",0dh,0ah, "Choice> ",0
  • 35. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 35 Përcaktimi i të Dhënave String (3 nga 3) • Sekuenca e karaktereve End-of-line : • 0Dh = carriage return • 0Ah = line feed str1 BYTE "Enter your name: ",0Dh,0Ah BYTE "Enter your address: ",0 newLine BYTE 0Dh,0Ah,0 Ideja: Përcakto të gjitha stringjet e përdorur nga programet tuaja në të njejtën zonë të segmentit të të dhënave.
  • 36. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 36 Përdorimi i Operatorit DUP • Përdor DUP për të alokuar (krijuar hapësirë për) një matrice(array) ose string. Sintaksa: numeruesi DUP ( argumenti ) • Numëruesi dhe argumenti duhet të jenë konstante ose shprehje konstante var1 BYTE 20 DUP(0) ; 20 bytes, të gjitha zero var2 BYTE 20 DUP(?) ; 20 bytes, të painicializuar var3 BYTE 4 DUP("STACK") ; 20 bytes: "STACKSTACKSTACKSTACK" var4 BYTE 10,3 DUP(0),20 ; 5 bytes
  • 37. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 37 Përcaktimi i të Dhënave WORD dhe SWORD • Përcaktime Hapësire për numra të plotë 16-bit • ose dopjo karaktere • vlera të thjeshta ose shumëfishe word1 WORD 65535 ; vlera më e madhe pa shenjë word2 SWORD –32768 ; vlera më e vogël me shenjë word3 WORD ? ; e painicializuar, pa shenjë word4 WORD "AB" ; dopjo karaktere myList WORD 1,2,3,4,5 ; matricë(array) me words array WORD 5 DUP(?) ; matricë e painicializuar
  • 38. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 38 Përcaktimi i të Dhënave DWORD dhe SDWORD val1 DWORD 12345678h ; pa shenjë val2 SDWORD –2147483648 ; me shenjë val3 DWORD 20 DUP(?) ; matrice pa shenjë val4 SDWORD –3,–2,–1,0,1 ; matrice me shenjë Përcaktime Hapësire për numra të plotë 32-bit me & pa shenjë:
  • 39. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 39 Përcaktimi i të Dhënave QWORD, TBYTE, Reale quad1 QWORD 1234567812345678h val1 TBYTE 1000000000123456789Ah rVal1 REAL4 -2.1 rVal2 REAL8 3.2E-260 rVal3 REAL10 4.6E+4096 ShortArray REAL4 20 DUP(0.0) Përcaktime Hapësire për vlera quadwords, tenbyte, dhe numra realë:
  • 40. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 40 Rënditja Little Endian • Të gjithë tipet e të dhënave më të mëdha se një byte ruajnë byte-t e tyre individual në rend të kundërt(reverse order). Byte-i më pak i rëndësishëm ndeshet në adresën e parë (më të ulët) të kujtesës. • Shembull: val1 DWORD 12345678h
  • 41. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 41 Shtim Variablash në AddSub TITLE Mbledhje dhe Zbritje, Versioni 2 (AddSub2.asm) ; Ky program shton dhe zbret numra të plotë ; 32-bit pa shënjë dhe ruan shumën në një variabël. INCLUDE Irvine32.inc .data val1 DWORD 10000h val2 DWORD 40000h val3 DWORD 20000h finalVal DWORD ? .code main PROC mov eax,val1 ; nis me 10000h add eax,val2 ; shton 40000h sub eax,val3 ; zbret 20000h mov finalVal,eax ; ruan rezultatin (30000h) call DumpRegs ; afishon regjistrat exit main ENDP END main
  • 42. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 42 Deklarim të Dhënash të Painicializuara • Përdor direktivën .data? për të deklaruar një segment të painicializuar të dhënash: P.sh.: .data smallArray DWORD 10 DUP(0) .data? bigArray DWORD 5000 DUP(?) P.sh.: .data smallArray DWORD 10 DUP(0) bigArray DWORD 5000 DUP(?) • Brënda segmentit, deklaroni variablat me inicializuesit “?” : smallArray DWORD 10 DUP(?) Avantazhe: madhësia e skedarit të programeve EXE zvogëlohet. Në këtë rast, kursejmë 4 x 5000 bytes!
  • 43. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 43 Në Vazhdim • Elementet bazë të gjuhës Assembly • Shembull: Mbledhje dhe Zbritje me numra të plotë • Asemblimi, Lidhja, dhe Ekzekutimi i Programeve • Përcaktimi i të Dhënave • Konstante Simbolike • Programimi në Mënyrë Reale Adresimi(Real-Address Mode)
  • 44. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 44 Konstante Simbolike • Direktiva e Shenjës së Barazimit • Llogaritja e Madhësisë së Matricave dhe Stringjeve • Direktiva ByteEQU • Direktiva TEXTEQU
  • 45. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 45 Direktiva e Shenjës së Barazimit • emri = shprehje • Shprehja është një 32-bit integer (shprehje ose konstante) • Mund të ripërcaktohet • emri quhet konstante simbolike • Përdorimi i simboleve është një stil i mirë programimi COUNT = 500 . . mov al,COUNT
  • 46. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 46 Llogaritja e Madhësisë së një Matrice Byte • Numeruesi i pozicionit aktual : $ • heq adresat e listës • diferenca është numri i byte-ve list BYTE 10,20,30,40 ListSize = ($ - list)
  • 47. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 47 Llogaritja e Madhësisë së një Matrice Word Pjestoni numrin total të byte-ve me 2 (madhësia e një word) list WORD 1000h,2000h,3000h,4000h ListSize = ($ - list) / 2
  • 48. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 48 Llogaritja e Madhësisë së një Matrice Doubleword Pjestoni numrin total të byte-ve me 4 (madhësia e një doubleword) list DWORD 1,2,3,4 ListSize = ($ - list) / 4
  • 49. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 49 Direktiva EQU • Përcakton një simbol ose si integer ose si shprehje teksti. • emri EQU shprehje • emri EQU simbol • emri EQU <teksti> • Nuk mund të ripërcaktohet PI EQU <3.1416> pressKey EQU <“Shtypni një tast për të vazhduar...",0> .data prompt BYTE pressKey matrix1 EQU 10 * 10 matrix2 EQU <10 * 10> .data M1 WORD matrix1 ; 100 M2 WORD matrix2 ; 10 * 10
  • 50. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 50 Direktiva TEXTEQU • Përcakton një simbol ose si integer ose si shprehje text. • emri TEXTEQU <teksti> • emri TEXTEQU textmacro • emri TEXTEQU %constExpr • Thirret një text macro • Mund të ripërcaktohet continueMsg TEXTEQU <“Dëshironi të vayhdini (PO/JO)?"> rowSize = 5 .data prompt1 BYTE continueMsg count TEXTEQU %(rowSize * 2) ; vlerëson shprehjen move TEXTEQU <mov> setupAL TEXTEQU <move al,count> .code setupAL ; gjenëron: "mov al,10"
  • 51. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 51 Në Vazhdim • Elementet bazë të gjuhës Assembly • Shembull: Mbledhje dhe Zbritje me numra të plotë • Asemblimi, Lidhja, dhe Ekzekutimi i Programeve • Përcaktimi i të Dhënave • Konstante Simbolike • Programimi në Mënyrë Reale Adresimi(Real- Address Mode)
  • 52. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 52 Programimi në Mënyrë Reale Adresimi(1 nga 2) • Gjenero Programe 16-bit MS-DOS • Avantazhet • Mundëson thirrjen e funksioneve MS-DOS dhe BIOS • Nuk ka kufizime në aksesin në kujtesë • Disadvantazhe • Duhet të jetë i informuar edhe me segmentin edhe me ofsetin • Nuk mund të thërrasë funksione Win32 (Windows 95 dhe më të reja) • Kujtesë e kufizuar në 640K për programin
  • 53. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 53 • Kërkesat • INCLUDE Irvine16.inc • Inicializimi i DS në segmentin e të dhënave: mov ax,@data mov ds,ax Programimi në Mënyrë Reale Adresimi(1 nga 2)
  • 54. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 54 Mbledhje dhe Zbritje, Versioni 16-Bit TITLE Mbledhje dhe Zbritje, Versioni 2 (AddSub2r.asm) INCLUDE Irvine16.inc .data val1 DWORD 10000h val2 DWORD 40000h val3 DWORD 20000h finalVal DWORD ? .code main PROC mov ax,@data ; inicializo DS mov ds,ax mov eax,val1 ; merr vlerën e parë add eax,val2 ; shto vlerën e dytë sub eax,val3 ; zbrit vlerën e tretë mov finalVal,eax ; ruaj rezultatin call DumpRegs ; afisho regjistrat exit main ENDP END main
  • 55. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 55 Përmbledhje • Shprehje Integer, konstante karakter • Direktiva – e interpretuar nga asembluesi • Instruksioni – ekzekutohet në kohën runtime • Segmentet code, data, dhe stack • Skedarët source, listing, object, map dhe të ekzekutueshëm • Direktiva Përcaktimi të Dhënash : • BYTE, SBYTE, WORD, SWORD, DWORD, SDWORD, QWORD, TBYTE, REAL4, REAL8, and REAL10 • operatori DUP, numeruesi i pozicionit aktual($) • Konstante Simbolike • EQU dhe TEXTEQU
  • 56. Pergatiti: Roland Vasili – Bazuar në Slidet e Kip Irvine 56 46 69 6E 69 73