Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 23

ASSEMBLER

DERS

NOTLARI

�gr. G�r. �brahim KORANA

Konya, 1998

Assembler programlama dili, �o�u zaman �zel alanlarda geli�tirilen programlarda


kullan�lan alt d�zel bir programlama dili olarak tan�mlan�r. Bu dilin komutlar�,
bilgisayar�n do�rudan i�letti�i makine dili komutlar�n�n birebir kar�� l���d�r. Bu
nedenle bu dil i�in makine dili de denilebilir.

Her ne kadar uzman programc�lar�n �zel alanlarda kulland��� bir dil olarak
tan�mlansa da, programc�lar istedikleri takdirde her t�rl� uygulamay� bu dil ile
geli�tirebilirler yada kulland�klar� �st d�zey dil alt�ndan �a��rabilecekler i
procedurler yazabilirler. ��nk� hemen hemen her dilde assembler i�in destek
bulunmaktad�r.

Dilin en b�y�k avantaj� CPU �evrebirimlerinin ve ana belle�in �ok iyi bir �ekilde
kontrol�n� sa�lamas�d�r. Ayr�ca i�letim sistem fonksiyonlar�n� da �ok kolayl�kla
kullanmak m�mk�nd�r. Assembler program dili derleyicisi kullan�lan ko mutlar�n
birebir makine dili kar��l�klar�n� �retir. Bu nedenle bu dil ile olu�turulan
programlar olabilecek en k�sa programlar olurlar.

Bir assembler program� �al�abilir bir program�n t�m kesimlerinin tam olarak
tan�t�lmas� ile olu�turulabilir. Bu nedenle bir assembler programda minimum �� ana
kesim bulunmal�d�r.

1 - STACK Segment

2 - DATA Segment

3 - CODE Segment

Basit bir assembler program�;

STACK SEGMENT PARA �STACK�


DB 64 DUP (�STACK�)

STACK ENDS

DATA SEGMENT PARA �DATA�

MESAJ DB �BU B�R ASSEMBLER PROGRAMIDIR $�

DATA ENDS

CODE SEGMENT PARA �CODE�

ANA PROC FAR

ASSUME CS;CODE, DS;DATA, ES;DATA, SS;STACK

PUSH DS

SUB AX,AX

PUSH AX

MOV AX,DATA

MOV DS,AX

MOV ES,AX

LEA DX,MESAJ

MOV AH,09

INT 21H

RET

ANA ENDP

CODE ENDS

END

1. B�LG�N�N TEMS�L�

Elektronik bilgi i�lem makinalar�nda bilgiler elektriksel uyar�mlarla temsil


edilirler. Bu uyar�mlar�n ifadesi 1 ve 0�lardan olu�an rakamlarla temsil edilirler.
Bu uyar�mlar� BIT ad� verilir. A��kt�r ki bir BIT ile 0 ve 1 gibi iki b ilginin
temsili s�zkonusudur. Ancak g�nl�k hayatta kulland���m�z bilgiler 2 adet de�ildir.
Bu nedenle BIT�ler guruplanarak kullan�l�rlar. En k���k BIT gurubu 8 bitten olu�an
guruptur ki bu guruba BYTE ad� verilir. Bir byte ile +127 ile -127 aras�ndaki rak
amlar ile harflerin temsili m�mk�n olur. Bir byte ile temsil edilen harfler i�in
kullan�lan en yayg�n stantdart ASCII(American Standard Code for Inf�rmation
Interchange) standartd�r.

2- VER� T�PLER�

Bir programlama dilinin temel �zelliklerinden birisi dilin i�inde kullan�lacak olan
veri tipleridir. Burada assembler dilinde kullan�lan en basit veri tiplerinden
bahsedilecektir.

Assembler programlama dilinde kullan�lacak olan bilgilerin uzunlugu bilgisayar�n


mikroi�lemcisine bagl�d�r. 8088 mikroi�lemci i�in en fazla 16 bit uzunlugunda bir
veri temsil edilebilir. 80286, 80386 ve 80486 mikroi�lemcileri daha g eli�mi�
olduklar� i�in kulland�klar� bilgi uzunlugu daha fazla olabilir.

2.1 BYTE

Byte 8 bitten olu�an bir bilgi birimidir. Assembler�da byte ile hem n�merik hemde
alfan�merik bilgileri temsil etmek m�mk�nd�r.

Gerek BYTE gerekse diger veri tiplerinde say�lar i�aretli ve i�aretsiz olarak iki
ana guruba ayr�l�rlar. �aretsiz say�lar t�m veri alan�n� bir b�t�n olarak
degerlendirildi�i bir durumu ifade eder. Say�lar�n i�aretli veya i�aretsiz olmas�
makine a��s�ndan izafi bir durumdur.

1 0 0 0 0 0 0 1 �aretsiz 129 say�s�n� temsil eder.

1 0 0 0 0 0 0 1 �aretli -1 say�s�n� temsil eder.

Negatif say�larda en duyarl� bit 1 olur.

Byte iki ana k�s�mdan olu�ur. Her k�s�ma NIBBLE ad� verilir. Her NIBBLE bir
hexadecimal say�y� temsil eder.

1 0 0 0 0 0 0 1

----------- -------------
2.NIBBLE 1.NIBBLE

2.2 WORD

2 Adet Byte ile olu�turulmu� bir yap�d�r. 8088 ve di�er mikroi�lemciler 16 bit
uzunlu�undaki bu yap�y� desteklerler. Word yap�s�n� bir b�t�n olarak
i�leyebilece�iniz gibi y�ksek byte (HB) veya Low byte (LB) olarak da
i�leyebilirsini z.

2.3 DOUBLEWORD

�ki word uzunlu�unda yani 32 bit uzunlu�unda bir yap�d�r. Gerek adreslemede gerekse
b�y�k say�lar�n saklanmas�nda kullan�l�r.

2.4 QUADWORD

64 Bit uzunlu�unda bir yap�d�r. 4 word�un birle�tirilmesi ile olu�turulur.

8088 Mikroi�lemcisi olan bir makinada direkt mikroi�lemcinin destekledi�i BYTE ve


WORD kavramlar� kullan�labilir. 80286, 80386 ve �zeri mikroi�lemcilerde BYTE ve
WORD kavramlar�n�n d��nda DOUBLEWORD ve QUADWORD kavramlar� da kulla n�labilir.
8088 mikroi�lemcilerde WORD�den daha uzun sabit ve de�i�kenler de kullan�labilir.
Ancak bu kullan�m direkt mikroi�lemci destegi d��nda yaz�l�m deste�i ile olur.

3- M�KRO��LEMC� TASARIMI

Bir mikroi�lemci,kendisine ba�l� �evre birimlerle haberle�ebilmek, y�r�tmekte


oldu�u programlar� kontrol edebilmek i�in REG�STER ad� verilen, kendi i� yap�s�nda
fiziksel olarak bulunan RAM elemanlar�n� kullan�r. REG�STERLER bir mikroi�lemcinin
en temel bile�enlerinden biridir. �ntel 80xxx serisi mikroi�lemcilerde uzunluklar�
de�i�mekle beraber a�a��daki registerler bulunur.

Genel Amacl� Registerler

AX Ah-Al Accumulator

BX Bh-Bl Base

CX Ch-Cl Counter

DX Dh-Dl Data
Segment Registerleri

CS Code Segment

DS Data Segment

SS Stack Segment

ES Extra Segment

Offset Registerleri

IP Instraction Pointer

SP Stack Pointer

BP Base Pointer

SI Stack Information

DI Data Information

Flag Registerleri

Flag

3.1 Genel Ama�l� Registerler

AX,BX,CX,DX registerleri genel ama�l� registerlerdir. Mikroi�lemci programlar�


�al�t�r�rken verileri ana bellek ile i� bellek aras�nda s�rekli olarak ta��r. Genel
ama�l� registerler bu ta��ma s�ras�nda arac�l�k ederler. Ayn� zaman da matematiksel
i�lemlerde giri� ve ��k� noktalar� olarak kullan�l�rlar. X

Bu registerlerin tamam� 16 bit uzunlu�unda olup, 2 byte�tan olu�urlar. Byte�lar bir


b�t�n olarak kullan�labilece�i gibi ayr� ayr� da kullan�labilirler.

3.1.1 AX YAZMACI
Programlarda en �ok kullan�lan yazma�lardan biridir. Accumulator��n k�salt�lmas�
sonunda olu�an AX yazmac� b�t�n giri� ve ��k� i�lemlerinde ve baz� aritmetik
i�lemlerde kullan�l�r.

AX

--------------------------------------------------------

AH AL

3.1.2 BX YAZMACI

BX Registeri Base register olarak da bilinir. RAM ve IO i�lemlerinde adreslemede


kullan�l�r. Register adresleme i�lemlerinde daha �ok offset degerlerini tutar.
Ayr�ca hesaplama i�lemlerinde de kullan�l�r.

BX

--------------------------------------------------------

BH BL

3.1.3 CX YAZMACI

CX Registeri Counter registeridir. D�ng� i�lemlerinde ve kayd�rma i�lemlerinde


saya� olarak kullan�l�r.

CX

--------------------------------------------------------

CH CL

3.1.4 DX YAZMACI

Register baz� giri� ��k� i�lemlerinde ve matematiksel i�lemlerde kullan�l�r.Daha


�ok �arpma ve b�lme i�lemlerinde b�y�k say�lar� saklamak i�in AX registerinin bir
par�as�ym� gibi kullan�l�r.

DX

--------------------------------------------------------

DH DL

3.2 Segment Registerleri

3.3 Pointer ve Index Registerleri

3.4 PSW Registeri

4. BELLEK , SEGMENT, OFFSET

5. DEBUG PROGRAMI

Debug program� exe veya com tipli, diger bir deyi�le makine dili formatl� program
dosyalar�n�n �al�t�r�lmas�, bu programlar�n bellek yerle�imlerinin, cpu �zerindeki
etkilerinin ve verilerinin incelenmesi, de�i�tirilmesi vs. amac�yla ku llan�lan bir
programd�r.

Debug program� ile bir makine dili program� bellege y�kleyebilir, bu program� step
step �al�t�rabilece�iniz gibi program�n belli bir k�sm�n� �al�t�rabilirsiniz veya
program�n makine dili kodlar� �zerinde de�i�iklik yapabilir, programa yeni kodlar
ekleyebilir veya ��karabilirsiniz. Yada herhangi bir program� assembly kullanarak
veya makine dili kullanarak yeniden olu�turabilirsiniz.

5.1 Debug Komutlar�.

Debug program� dos i�letim sisteminin bir par�as�d�r. Bu nedenle dos versionlar�
aras�nda komutlarda veya komut �zelliklerinde de�i�iklikler olabilmektedir. Burada
program�n t�m komutlar�n� anlatmak yerine program yazmay� veya incelemeyi
sa�layacak olan komutlar �zerinde durulacakt�r.

A Assemble Assembly programlar�n�n yaz�lmas�n� saglar.

G Go Bellekte y�kl� olan bir program�n �al�t�r�lmas�n� sa�lar.


L Load Diskten belle�e bir pro�ram�n y�klenmesini sa�lar.

N Name Bellekteki program i�in isim se�meyi sa�lar.

Q Quit Programdan ��karak i�letim sistemine d�nmeyi sa�lar.

R Register Register degerlerini g�rme ve de�i�tirme.

T Trace Bellekteki bir veya daha fazla komutun �al�t�r�lmas�n� sa�lar.

U Unassembly Assembly kodlar�n�n makine dili kar��l�klar�n� alman�z� sa�lar.

W Write Bellekteki pro�ram�n diske yaz�lmas�n� sa�lar.

Program sistem komut sat�r�ndan debug yaz�larak �al�t�r�labilir. Program


�al�t�r�l�rken eger bir program bellege y�klenecekse bu program ismi komut
sat�r�ndan verilebilir. Program �al�t���nda ekran�n sol taraf�nda ( - ) i�areti
belirecektir. Bu prompt debug program�n�n komut almaya haz�r oldu�unu g�sterir.

5.1.1 A Assembly Komutu

A Komutu assembly program yazmak i�in kullan�l�r. Bu komutun kullan�l� �ekli;

-- A [segment:offset]

�eklindedir.

Komutun parametresi olan adres, yaz�lacak program�n bellegin neresinden itibaren


yerle�ece�ini g�sterir. Parametre se�imliktir. E�er verilmeyecek olur ise mevcut CS
ve IP �zerindeki de�erler komutun parametresi olarak varsay�l�r. Komuttan sonra hi�
bir parametre vermeyece�iniz gibi sadece offset adresi de verebilirsiniz. E�er
komuttan sonra sadece tek bir say� verilmi�se verilen de�er offset olarak alg�lan�r
ve IP registerine bu deger verilerek program�n default segment ve belirlenen offset
�zerinde n yaz�lmas� sa�lan�r.

Komutun �al�t�r�lmas� ile, default veya belirlenen segment ve offset adresi yeni
bir sat�r ba��na yaz�larak bu adresin yan�nda komut giri�i i�in beklenir. Her komut
girilip enter tu�una bas�ld���nda debug ilk �nce girilen komutu yorumlar ve girile
n komut do�ru ise segment ve offset adresleri yaz�lan komut uzunlu�u kadar
art�r�larak yeni komut giri�i i�in beklemeye ba�lar. E�er girilen komut hatal� ise
hata yeri g�sterilerek komutun tekrar girilmesi i�in ayn� segmet ve offset
adreslerinde beklenir. E�er herhangi bir sat�rda komut girilmeyerek enter tu�una
bas�l�rsa debug komut sat�r�na geri d�ner. �rnek;

C>Debug
- A

2054:0100 Push Ds

2054:0101 Mov Ax,B800

2054:0104 Mov Ds,Ax

2054:0106 Mov Si,0000

2054:0109 Mov Word [Si],7941

2054:010C Pop Ds

2054:010D Int 20

2054:010F

- G

Program yaz�l�rken en son girilen komutun offset adresi default offset olarak
al�n�r. A komutundan ��kt�ktan sonra tekrar ayn� komut kullan�l�rsa default
segmentin son kal�nan offseti ekrana getirilir. E�er programa ek yap�lacaksa bu
y�ntem kullan� labilir. Ancak herhangi bir komut de�i�tirilecekse komuta girilirken
de�i�tirilecek sat�r�n segment ve offset adresi verilerek girilmelidir.

A komutu ile girilen komutlar belle�e pe�pe�e yerle�tirilirler. Bu nedenle yaz�lm�


bir pro�ram�n de�i�tirilmesi olduk�a zordur. E�er de�i�tirece�iniz komut uzunlu�u
daha �nce yazd���n�z komut uzunlu�u ile ayn� ise problemsiz bir de�i�im s�zkonusu
olabilir. Ancak yazaca��n�z komut eskisinden uzun ise M komutu ile ramde yer a�mak
gerekir.

5.1.2. G Go Komutu

Go komutu haf�zadaki bir program�n icra ettirilmesi amac� ile kullan�l�r. Komutun
format�;

- G Adres

�eklindedir.

Komuttan sonra verilen Adres parametresi se�imliktir. Adres verilmez ise program
CS;IP ikilisindeki de�erler default olarak al�narak �al�t�r�l�r. Verilen adres her
zaman program�n ba�lat�laca�� adres olarak al�n�r. Bu de�er sadece offset olarak ve
rilebilece�i gibi segmet ve offest olarak da verilebilir.
Haf�zadaki herhangi bir program RET yada INT 20 komutlar�ndan biri ile bitmelidir.
G komutu bu iki assembler komutundan birini icra ettirdi�inde PROGRAM TERMINATED
NORMALLY deyimi ile sona erer. Bahsedilen komutlar program icras�n� sona erdirerek
k omut sat�r�na d�nmeyi sa�lar. Herhangi bir program bu iki komuttan biri ile sona
ermiyor ise makinan�z denetimsiz komutlar y�z�nden kilitlenecek yada istem d��
davranacakt�r.

Herhangi bir pro�ram� birden fazla say�da �al�t�racaksan�z ikinci ve sonraki


�al�t�rmalarda CS:IP ikilisinin de�erlerinden emin olmal�s�n�z. CS:IP ikilisine
istedi�iniz herhangi bir de�eri R komutu ile atayabilirsiniz.

5.1.3 L Load Komutu

L Komutu disk �zerindeki herhangi bir program�n belle�e y�klenmesi i�in kullan�l�r.
Komutun herhangi bir parametresi yoktur. Komut N komutu ile ismi belirlenmi�
bulunan program� belle�e y�kler.

5.1.4 N Name Komutu

N Komutu, L veya W komutu i�in dosya ismi se�mekte kullan�l�r. Komutun kullan�m
�ekli;

- N Dosya Ad�

�eklindedir.

Name komutu Load ve Write komutlar�ndan �nce kullan�larak diskten �a�r�lacak yada
diske yaz�lacak dosyan�n ad�n� belirlemekte kullan�l�r.

5.1.4 Q Quit Komutu

Komut debug program�n� sonland�r�r.

5.1.5 R Register Komutu

Komut CPU registerlerinin de�erlerini g�rmek yada de�i�tirmek i�in kullan�l�r. R


komutunun kullan�m bi�imi a�a��da verilmi�tir.

- R Register Ad�

Komut registerlerin kullan�m� ile ilgili olmak �zere 3 ayr� g�revi yerine getirir.

R : Komut tek ba��na kullan�l�rsa CPU registerlerinin o anki t�m degerleri


g�sterilir. Registerlerin yan�s�ra komut Flag registerinin degerlerini de temsili
olarak g�sterecektir. Komutun kullan�m� sonunda CS:IP ile i�aret edilen komut da
ekranda g�ste rilecektir. R komutunun kullan�m� sonunda a�a��dakine benzer bir
g�r�nt� al�ncakt�r.

- R

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=2054 ES=2054 SS=2054 CS=2054 IP =0100 NV UP EI PL NZ NA PO NC

2054:0100 IE PUSH DS

NV UP EI PL NZ NA PO NC de�erleri d��ndaki t�m re�i�terler daha �nceki b�l�mlerde


anlat�lm�t�. Yukar�daki de�erler Flag registerinin temsili g�sterimidir. Bu
registerin alabilece�i de�erler a�a��da g�sterilmi�tir.

FLAGLAR

Overflow

Direction

Interrupt

Sign

Zero

Auxiliary Carry

Parity

Carry
BIT SET (1)

OV

DN

EI
NG
ZR

AC

PE

CY
BIT RESET (0)

NV

UP

DI
PL
NZ
NA
PO

NC

R komutundan sonra parametre olarak F harfi kullan�l�rsa program flaglar�n


de�i�tirilmesi i�in mevcut flaglar� ekrana getirir ve istedi�iniz flaglar�
de�i�tirmeniz i�in bekler. Bu durumda istedi�iniz herhangi bir flagi set yada reset
edebilirsiniz.

- R F

NV UP EI PL NZ NA PO NC - ZRUP

Yukar�daki �rnekte Zero flag� SET, direction flag� RESET edilmektedir.

R komutu ile sadece flaglar�n de�il t�m registerlerin degerleri de�i�tirilebilir.


Bunun i�in R komutundan sonra de�i�tirilmesi istenen registerin isminin yaz�lmas�
gerekir. Bu i�lem ger�ekle�ti�inde registerin mevcut degeri ekrana yaz�l�r ve ( : )
i� areti konularak registerin yeni degeri sorulur. Bu i�aretin yan�na deger 4 digit
hexadecimal olarak verilmelidir. Eger bir deger verilmeyip enter tu�una bas�l�rsa
registerin i�eri�i de�i�tirilmeyecektir.

5.1.6 T Trace Komutu

Trace komutu haf�zada bulunan bir program�n sat�rlar�n�n tek tek veya belli bir
k�sm�n�n �al�t�r�lmas� i�in kullan�l�r. Komutun kullan�m� a�a��da verilmi�tir.

- T=Adres De�er

Komutun parametreleri se�imliktir. Ilk parametre Adres parametresidir ki bu


parametre kullan�lacaksa komuttan sonra = i�aretinin kullan�m� zorunludur. Adres
parametresi icra ettirilecek ilk komutun adresi olarak al�n�r.

De�er parametresi ka� adet komutun pe�pe�e icra ettirilece�ini g�sterir. E�er
kullan�lmam� ise bu de�er 1 olarak al�n�r. E�er herhangi bir parametre kullan�lmaz
ise komut CS:IP ile adreslenen yerden ba�layarak 1 komut icra ettirilir ve komutun
icr as�ndan sonra registerlerin de�eri ve i�lenecek olan komut ekranda
g�r�nt�lenir.

5.1.7 U Unassembly Komutu

U Komutu bellekteki program�n makine dili ve assembly kar��l�klar�n� ekranda


listelemek i�in kullan�l�r. Komutun kullan�m �ekli a�a��da verilmi�tir.

- U Adres1 Adres2

Parametre olarak verilen Adres1 listelenmek istenen program�n ba�lang�� adresini


g�sterir. Bu adres segment ve offset olarak verilebilir. Bu adres verilirken
herhangi bir komutu b�lmemesine �zen g�stermek gerekir. Aksi halde ekrana
getirilecek list e anlams�z bir liste olacakt�r.

Ikinci verilen parametre listelemenin sonunu belirler. Burada verilecek adres


offset niteli�inde olmal�d�r. Segment Adres1�de belirtilen segment adresi olarak
al�nacakt�r.

�rnek 1

U 101 106

2054:0101 B800B0 MOV AX,B000

2054:0104 8ED8 MOV DS,AX


2054:0106 BE0000 MOV SI,0000

�rnek 2

U 102 106

2054:0102 00B08ED8 ADD [BX+SI+D88E],DH

2054:0106 BE0000 MOV SI,0000

5.1.8 W Write Komutu

Bellekteki herhangi bir pro�ram�n bir blok �eklinde diske pro�ram olarak
yaz�lmas�n� sa�lar. Komutun kullan�m �ekli;

W Adres

�eklindedir.

Komuttan sonra verilen adres diske kaydedilecek pro�ram�n ba�lang�� adresidir. E�er
bu parametre verilmezse 0100 offseti default olarak kabul edilir. Diske yaz�lacak
program�n uzunlu�u BX:CX register �iftinden al�n�r.

Komut kullan�lmadan �nce N komutu ile diske yaz�lacak program�n ismi


belirlenmelidir. Aksi halde diske yazma i�lemi default deger �zerinden
yap�lacakt�r.

�rnek;

N Deneme.com

R BX

: 0000

R CX
: 0010

Writing 0010 Bytes

6. ASSEBLER PROGRAM YAPISI ve ILGILI KOMUTLAR

Bir program belle�i par�alara b�lerek (segmentleyerek) kullan�r. Assembler


programlarda da yap� itibariyle bellegin segmentlere ayr�lmas� ve ayr�lan her
b�l�m�n ayr� ayr� tan�mlanarak kullan�lmas� esast�r. Bu nedenle bir assembler
program�nda genel itibariyle b�l�m tan�mlar� program�n yap�s�n� olu�turur.
Genellikle bir pro�ramda ge�ici verilerin sakland��� stack, kal�c� verileri
saklamak i�in data ve program kodlar�n�n sakland��� code segment b�l�mleri yer
al�r. Bir assembler program�n�n �rnek yap� s� a�a��da verilmi�tir.

STK SEGMENT PARA �STK�

Tanimlar

Tanimlar

STK ENDS

DAT SEGMENT PARA �STK�

Tanimlar

Tanimlar

DAT ENDS

COD SEGMENT PARA �COD�


ANA PROC NEAR

ASSUME SS:STK, DS:DAT, CS:COD

....

....

ANA ENDP

COD ENDS

END

6.1 Segment Komutu

Segment komutu program�n kulland��� segment kesimlerini tan�mlamak i�in kullan�l�r.


Program i�inde tan�mlanan herhangi bir segment segment registerleri taraf�ndan
takip edilir. Tan�mlanan herhangi bir segmentin hangi register taraf�ndan takip
edil ecegi ASSUME deyimi ile tan�mlan�r. Komutun kullan�m �ekli;

isim SEGMENT tip �s�n�f�

�eklindedir.

Komut bir isim ile ba�lar. Tan�mlanan isim degi�ken olabilme kurallar�na uygun
herhangi bir harf dizisidir. Tan�mlanan isim program i�inde yap�lacak atamalarda
vb. i�lemlerde kullan�labilir.

Tip segmentin adreslenebilme tipini belirler. Bu deyim ile kullan�labilecek tip


�e�itleri;

PAGE 256 Byte ve katlar�yla adreslenebilen segment

PARA 16 Byte ve katlar�yla adreslenebilen segment

WORD Word ve katlar�yla adreslenebilen segment

BYTE Byte ve katlar�yla adreslenebilen segment

Segment anahtar c�mlesi ile ba�layan bir segment ENDS c�mlesi ile son bulmak
zorundad�r.
�rnek

STK SEGMENT PARA �STK�

Tanimlar

Tanimlar

STK ENDS

STK SEGMENT PAGE �STK�

Tanimlar

Tanimlar

STK ENDS

6.2 Assume Komutu

Mikroi�lemciler program i�inde bellek kesimlerini takip edebilmek i�in en az 3 adet


segment registeri kullan�r. Bu registerler CS, DS, SS registerleridir. CS registeri
program kodlar�n� takip etmek i�in, DS registeri program i�inde sabit olarak kul
lan�lan verileri saklamak i�in, SS registeri ise program i�inde kullan�lan ge�ici
verileri saklamak i�in kullan�l�r.

Program i�inde belirlenen segmet kesimlerinden hangisinin hangi register ile takip
edilecegi assembler derleyicisine Assume deyimi ile bildirilir. Komutun kullan�m
�ekli,

Assume register : segment , register : segment , ........ �eklindedir.

�rnek:

STK SEGMENT PARA �STK�

Tan�mlar

Tan�mlar
STK ENDS

DATA SEGMENT PARA �DAT�

Tan�mlar

Tan�mlar

DATA ENDS

CODE SEGMENT PARA �CODE�

BASLA PROC FAR

ASSUME DS:DATA, SS:STK, CS:CODE

6.3 Proc Komutu

Proc komutu Code segment i�indeki bir i�lem blogunun tan�mlanmas�n� sa�lar.
Tan�mlanan bloklar bir procedure davranabilirler ve diger bloklar taraf�ndan CALL
komutu ile �a�r�labilirler. Her assembler program� i�inde en az 1 i�lem blogunun
olmas� zo runludur. �lk �al�acak olan blok segment ba�lan��c�ndaki bloktur. Bu
bloktan diger bloklar �a�r�labilir. Eger assembler program �st d�zey dillerden
�a�r�lacak bir program ise ilk �al�acak blok �a�r�lan blok olaca��ndan segment
ba��nda olma zorunlulu�u y oktur. Komutun kullan�l� �ekli;

isim PROC tip

�eklindedir.

�sim, degi�ken olabilme kurallar�na uymak ko�ulu ile istenen herhangi bir harf
dizisi olabilir. PROC deyiminden sonra gelen tip FAR veya NEAR olabilir. Bu
deyimler ilerideki b�l�mlerde detayl� olarak anlat�lacakt�r. ilk �al�acak b�l�m�n
FAR, dige r b�l�mlerin NEAR olabilece�inin bilinmesi bu b�l�m i�in yeterlidir.

Proc deyimi ile ba�layan herhangi bir program blogu ENDP deyimi ile
sonland�r�lmal�d�r.

�rnek:
STK SEGMENT PARA �STK�

Tan�mlar

STK ENDS

DATA SEGMENT PARA �DAT�

Tan�mlar

DATA ENDS

CODE SEGMENT PARA �CODE�

BASLA PROC FAR

ASSUME DS:DATA, SS:STK, CS:CODE

Push DS

Push SS

Mov Ax, 15h

CALL ATLA1

BASLA ENDP

ATLA1 PROC FAR

RET

ATLA1 ENDP

ENDS

END

6.4 Call/Ret Komutu

Call komutu herhangi bir i�lem blogu i�inden bir ba�ka i�lem blogunu �ag�rmak i�in
kullan�l�r. Komut ayn� segment i�indeki(Near) i�lem bloklar�n� �a��rabilece�i gibi
farkl� segment i�indeki(Far) i�lem bloklar�n� da �a��rabilir. Komutun kullan�l� �
ekli;
CALL �a�r�lan Blok Ad�

Call komutunun i�lenmesi s�ras�nda mikroi�lemci �a�r�lan bloga gitmeden �nce code
segment i�inde bulundu�u adresi stack segment i�ine saklar ve �a�r�lan yere
dallan�r. �a�r�lan blok i�inde i�lemler sona erdikten sonra stack segmente saklanan
adrese tekrar geri d�n�l�r. �a�r�lan blok i�indeki i�lemlerin bitti�i RET komutu
ile belirlenir.

Ret komutu genel olarak parametresiz kullan�l�r ve stack segment i�indeki bilginin
CS:IP ikilisine aktar�lmas�n� sa�lar.

7. DEG��KEN VE SAB�T TANIMLAMA

Assembler program i�inde herhangi bir segment kesiminde degi�ken tan�mlamas�


yap�labilir. De�i�ken ve sabit tan�mlamalar�;

DB
DW
DD
DQ
DT
DUP
Komutlar� ile yap�l�r.

7.1 DB Deyimi

Byte tipi bir degi�kenin veya sabitin tan�mlanmas�n� sa�lar. Tan�mlama byte tipinde
bir alan olabilece�i gibi dizi �eklinde bir alan da olabilir. Tan�mlanan
alan(lar�n) 8 bit olmas� nedeni ile bu alana 0 ile FF aras�nda herhangi bir deger
atanabili r. Deyimin kullan�l� �ekli;

degi�ken DB ilk deger

T�m de�i�ken veya sabit tan�mlama deyimleri ile tan�mlanan alanlara ilk deger atama
i�lemleri tan�mlama an�nda ger�ekle�tirilir. E�er tan�mlanan alana deger
atanmayacak ise ilk deger olarak ? atanmal�d�r. A�a��daki atamalar ge�erli
atamalard�r.
SAYI DB 30 ;ilk de�eri 30 olan SAYI sabit/de�i�keni

SAY DB 0AH ;ilk de�eri 10 olan SAY sabit/de�i�keni

ABC DB �ADI SOYADI� ;ilk de�eri ADI SOYADI olan karakter dizisi

DIZI DB 0,1,2,3,4,5,6,7 ;de�erleri 0,1,2,3,4,5,6,7 olan byte dizisi

ilk de�er atamas� s�ras�nda bir dizi olu�turulacak ve dizinin i�ine belirli bir
de�er/de�erler atanacaksa DUP deyimi kullan�l�r.

ABC DB 10 DUP (?) ;i�erikleri olmayan 10 byte�l�k bir dizi

ABC DB 50 DUP (0AH) ;��erikleri 10 olan 50 byte�l�k bir dizi

ABC DB 25 DUP (0,1) ;i�erikleri 0,1,0,1.... olan 25 byte�l�k bir dizi

7.2 DW Deyimi

iki byte�l�k bir sabit/de�i�ken tan�mlamas�n�n yap�lmas�n� sa�lar. Deyimin


kullan�l� �ekli;

degi�ken DW ilk de�er

�eklindedir.

MESAJ DW 1210H

SAYI1 DW ?

SAYI2 DW 10 DUP(0)

SAYI3 DW 0,0AABH,CCCAH

7.3 DD Deyimi

D�rt byte�l�k bir sabit/de�i�ken tan�mlamas�n�n yap�lmas�n� sa�lar. Deyimin


kullan�l� �ekli;
degi�ken DD ilk de�er

�eklindedir.

MESAJ DD 12100000H

SAYI1 DD ?

SAYI2 DD 10 DUP(0)

SAYI3 DD 0,0AABC12H,0H

7.4 DQ Deyimi

64 bitlik, Sekiz byte�l�k bir sabit/de�i�ken tan�mlamas�n�n yap�lmas�n� sa�lar.


Deyimin kullan�l� �ekli;

degi�ken DQ ilk de�er

�eklindedir.

MESAJ DQ 12100000H

SAYI1 DQ ?

SAYI2 DQ 10 DUP(0)

SAYI3 DQ 0,0AABC12H,0H

7.5 DT Deyimi

Seksen bit 10 byte�l�k bir sabit/de�i�ken tan�mlamas�n�n yap�lmas�n� sa�lar.


Deyimin kullan�l� �ekli;

degi�ken DT ilk de�er

�eklindedir.
MESAJ DT 12100000H

SAYI1 DT ?

SAYI2 DT 10 DUP(0)

You might also like