ASSEMBLY - ASSEMBLER
Arkada�lar bu ilk yaz�mda assemly temel kullan�m� registerler modul ve makrolar�n tan�mlamalar� de�i�ken tiplerini g�rece�iz. Bundan sonraki b�l�mlerimizde s�rekli olarak yazd���m Asm programlar�n� birlikte inceleyece�iz.
Asembler, text (yaz� ) olarak yaz�lan programlar�n makina koduna �evrilmesini sa�lar. " MOV A, 5 " komutunun microcontroller i�in hi� bir anlam� yoktur. Ancak ayn� komut "74 05" olarak ifade edildi�inde anlam kazan�r. Asembler veya daha �st seviye Basic, C, Forthran, Pascal vs. diller makina dili kodlar�n�n bizim anlayaca��m�z hale getirilmi� �eklidir.
Y�ksek seviyeli dillerle birka� sat�rl�k yaz�lan programlar asembler'da birka� veya daha fazla sayfaya kadar ��kabilir. Ayr�ca asembler'da kar���k matematik i�lemlerini yapmak �ok zordur. Kullan�lan en alt seviye dil Asembler 'dir.Bu dil ile program yazmak olduk�a zordur.��nki bu dille program yaz�labilmesi i�in kullan�lan microcontroller veya ( microprocosser )'un mimari yap�s�n�n iyi bilinmesi gerekmektedir.Asembler'i iyi kullanan bir programc� y�ksek seviye dillerine g�re daha g��l�, daha verimli ve daha h�zl� �al��an programlar yazabilir.Ancak program yazma s�resi y�ksek seviyeli dillere g�re �ok daha uzun olur. .
1.ASEMBLER DE KULLANILAN SEMBOLLER :
Semboller say�sal sabitlerin, adreslerin, macrolar�n vb.yerini tutan alfan�merik g�sterimlerdir.Semboller i�in kullan�lan karakterler b�y�k harfler (A-Z), k���k harler (a-z), rakamlar ( 0 - 9 ), soru ( ? ) ve ( _ ) i�aretidir.T�m semboller harf yada ( ? ) veya ( _ ) i�aretleri ile ba�lamal�d�r.
�rnek ,
PI
Ba�la
Seri_port
Adr_1024
?_?_?
Bir sembol rakam ile ba�layamaz. Bir sembol�n kullan�m�nda derleyici t�m sembolleri b�y�k harfe �evirir. Bu nedenle b�y�k ve k���k harfli semboller ayn� de�eri al�r. "reset" ile "RESET" aras�nda fark yoktur.Semboller bir program i�erisinde sadece bir kez tan�mlanabilirler ve 255 karakteri ge�emezler.Ancak derleyici i�in ilk 32 karakter ge�erlidir, di�er karakterler �nemli de�ildir.Baz� semboller kullan�c� taraf�ndan tan�mlanamazlar. Bunlar EQ, NE, HIGH, LOW, MOD, DATA, EQU vs. Mnemonic kodlarda kullan�lan semboller de kullan�c� taraf�ndan kullan�lamazlar.Bunlar MOV, R1, R5, A, AB, C, DPTR, PC vb. Kullan�c� taraf�ndan kullan�lamayacak sembollerin bir listesi EK B' de verilmi�tir.
" ; " (Noktal� virg�l): Derleyicin dikkate almamas� gereken ve genellikle a��klama ihtiyac� hissedilen yerlerde kullan�l�r.
�rnek :
;***********************************************
;BU SATIRLAR A�IKLAMA ���N KULANILMI�TIR.
;DERLEY�C� TARAFINDAN D�KKATE ALINMAZ
;***********************************************
mov r1,#45 ; r1 registerine 45 y�kle.
inc r1 ; r1 registerini 1 art�r.
;========Ba�ka bir a��klama sat�r� ===============
2.ETiKETLER (LABELS) :
Sembollerin �zel durumlar�d�r. Etiketler fiziksel adreslerin yerine, program�n daha iyi anla��labilmesi i�in kullan�l�r.
basla :
mov a,# 3
inc a
sjmp start
Burada " basla " etiket olarak kullan�lm��t�r ve " mov a,#3 " komutunun bulundu�u adresi belirler.
3.ASEMBLER KONTROLLER� :
Asembler kontrolleri ana dosyan�z�n haricindeki yard�mc� dosyalar�, liste dosyas�n�n format�n�, kullan�lacak i�lemlerin modeli gibi kontrollerin yap�lmas�n� sa�lar.Bunlar;
3.1 . $DATE ( Tarih ) :Tarih belirtilir
�rnek :
$ Date ( 15.2.1997 )
3.2 . $INCLUDE ( File ) : Ana program d���ndaki program b�l�mlerini ana programa dahil eder.
�rnek :
$ INCLUDE (TABLO.ASM)
3.3. $MOD51 ve $MOD52 : Programdaki Special Function Register ( SFR ) leri �nceden tan�mlar. " MOD51 " 8051 ve 8031, " MOD52 " 8032 ve 8052 nin registerini tan�mlar.
3.4. $TITLE ( Ba�l�k ) : Ba�l�k belirtir.
�rnek :
$TITLE (�rnek uygulama 1 )
4.MACRO TANIMLAMA :
"Macro" lar programda her zaman tekrar edilen kodlar i�in faydal�d�r.Programc�ya zaman kazand�r�r.Kod bir defa yaz�l�r ve program�n �e�itli yerinde bir�ok defa macro ismiyle kullan�labilir. Macrolar 4 b�l�mden olu�ur.
Isim MACRO [etiket1,etiket2 ...,de�i�ken1,de�i�ken2 ...]
KOD
ENDM
-Macronun ismi
-Macronun etiket ve de�i�kenleri
-Macronun kod'u
-ENDM macro sonunu belirler
�rnek 1 :
ACC (Ak�m�lat�r ) 'deki say�y� 16 ile �arpan bir macro yazal�m.
CARP_ 16 MACRO
RL A ; x 2
RLA ; x 4
RLA ; x 8
RLA ; x 16
ENDM
Bu macro program� i�ersinde ;
:
:
MOV A, # 3
CARP _16 ; ACC i�ersindeki de�er 16 ile �arp�l�r.
:
:
�eklinde kullan�l�r.
�rnek 2 :
ACC (Ak�m�lat�r) i�ersindeki de�ere istenilen bir say�n�n eklenmesi
EKLE MACRO X
ADD A, #X
ENDM
Bu macronun program i�ersinde kullan�lmas�
:
:
MOV A, # 5
EKLE ( 10 ) ; A' ya 10 eklenir ve A i�erisindeki yeni de�er 15 (0FH) olur.
:
:
�rnek 3 :
R0 '�n i�ersindeki de�erin istenilen bir de�erle kar��la�t�r�l�p, o de�ere e�itse istenilen adrese s��rama yap�lmas� .
ESITSE _ GIT MACRO X,L1,L2
SUB R0, # X
JZ L1
LJMP L2
ENDM
Bu macronun program i�ersinde kullan�lmas�
:
DON :
:
:
MOV R0,#10
ESITSE _ GIT 10, ESIT, DON
:
:
ESIT:
:
R0 registerindeki de�er 10 say�s�na e�itse " ESIT " adresine e�it de�ilse " DON " adresine s��rama yap�l�r.
5. ASEMBLER "DIRECTIVE" LERI
Directive'ler sembolleri tan�mlamak, haf�zada yer ay�rmak ve ana dosyan�n�n sonunu belirlemek i�in kullan�l�r.
EQU : Bir sembole bir de�er atamak i�in kullan�l�r. Daha �nce tan�mlanm�� A, R0, R1 ... gibi registerlerin tekrar tan�mlanmas�nda da kullan�labilir.
ON EQU 10
SAYICI EQU R7 ; R7 daha �nce tan�mlanm�� bir registerdir.Fakat ; tekrar tan�mlanm��t�r.Programda direk R7 olarak ; kullan�labilece�i gibi SAYICI ismiyle de ; kullan�labilir. " INC R7 " ile " INC SAYICI " ayn� ; i�lemi yapar.
BES EQM ON/2
A_REG EQU A
DHARF 1 EQU 'D'
SABIT EQU 23
SAYI EQU Sabit +5
CIKIS EQU P1.0 ;Port 1 in 0 numaras� ��k�� olarak tan�mland�.
BIT : Bir sembole haf�zadaki bir " bit " 'in direk adresini atar.Adresin n�merik de�eri 0 - 127 aras�nda ise atanan adres internal memory ( dahili haf�zada) ' dedir, 128 - 255 aras�nda ise atanan adres SFR'lerdedir.
CF BIT 0D7H ;Carry flag (PSW registerinde )
LAMBA _ YAK BIT 6
LAMBA _ S�ND�R BIT LAMBA_YAK+1
DATA : Directive, direk adreslenebilen internal memory adresinin bir sembole atanmas�n� sa�lar .
PSW DATA 0D0H ; Program status adresinin tan�mlanmas�
DIPLAY1 DATA 32H
DISPLAY2 DATA DISPLAY 1+1
PORT1 DATA 90H
XDATA : XDATA , directive ,external ( harici ) data memory adresinin bir sembole atanmas�n� sa�lar. Atanan de�er ( 0- 65535 ) aras�nda olmal�d�r.
BUFFER XDATA 2048
DB : Program memory 'e byte sabitlerin y�klenmesini sa�lar.
�rnek 1 :
TABLO :
DB 1
FB 2
DB 3
DB 5
veya ;
Tablo:
DB 1,2,3,5
�rnek 2:
Mesaj :
DB 'merhaba size'
�rnek 3 :
Kar���k:
DB 2*8 ,'MPG', 2*16, 'abc'
ORG = Kullan�lan mevcut aktif segment yer belirleyicisini tan�mlamak i�in kullan�l�r.Program esnas�nda program�n�z�n hangi adresten ba�layaca��n� belirler.
�rnek 1 :
ORG 0
MOV A , # 10
JMP start
ORG 2000h
start : INC A
:
END
�rnek 2 :
org 1000 h
org RESET ; RESET 'in �nceden tan�mlanm�� olmas� gerekir. (RESET EQU 0)
org RESET +1024
END : End directive program�n�z�n bitti�ini belirtmek i�in program�n�z�n en sonunda kullan�lar.
org 0
Start :
mov a,#40 :
inc a :
:
End
ASEMBLER'IN �RETT��� HATA KODLARI
Derleme esnas�nda yazd���m�z programa $INCLUDE ( dosya ) ile program par�alar� dahil etti�imizde, bu dosyalar�n a��lmas�nda olu�an hata kodu :
FATAL ERROR opening (dosya ismi )
�eklinde bizi uyar�r. Dosya isminin do�ru olup olmad���n� tekrar kontrol etmemiz gerekir.Program�n derlenmesinden sonra
ASEMBLY COMPLETE , 02 ERRORS FOUND
Mesaj� geldi�inde yaz�l�mda 2 hata yapt���m�z� belirtir. " Liste .LST " komutuyla listeyi �a��r�p hatalar�m�z� sat�r sat�r g�rebiliriz. " ESC " tu�una basarak programa tekrar d�nebiliriz.
Yaz�l�mda yap�lan hatalar :
ERROR # 1 : Illegal character :
Yaz�l�mda kullan�lmamas� gereken bir karakterin kullan�ld���n� g�sterir.(kullan�lan karakterler ba�lang�� b�l�mlerinde a��klanm��t�.)
ERROR #2 : Undefined symbol
Tan�mlanmam�� bir sembol kullan�ld���nda olu�ur.
ERROR #3 :Dublicate symbol
Daha �nce tan�mlanm�� bir sembol ikinci kez tekrar tan�mlanmaya �al���l�rsa olu�ur.
ERROR #4 :Illagal digit for radix.
Sembollerin kullan�lmamas� gereken bir karakter veya rakamla ba�lamas� sonucu meydana gelir.
ERROR #5 : Number too large.
Belirtilen say� 16 bit'i ( 65535 ) ge�ti�inde olu�ur.
ERROR #6 : Missing END directive
Ana program sonunda " END " kullan�lmad��� zaman olu�ur.
ERROR #7 : Illegal opcode / directive after label
Etiketten sonra yanl�� opcode veya directive kullan�ld���nda olu�ur.
ERROR #9 : Text beyond END directive
Program sonunda kullan�lan " END " den sonra program yaz�l�m� devam etti�inde olu�ur.
ERROR #10 : Illegal or missing expression
Programda yanl�� veya eksik ifade kullan�lm�� demektir.
ERROR #11 : Illegal or missing expression operator
Programda yanl�� ve eksik bir matematik operat�r� kullan�lm�� demektir.
ERROR #12 :Unbalanced parantheses
Eksik parantez kullan�lm�� demektir.
ERROR #13 :Illegal or missing expression volume
Yanl�� veya eksik sembol veya n�merik de�er kullan�lm��.
ERROR #16 : Division by zero
Programda kullan�lan ifadede, bir say� s�f�ra b�l�nmeye �al��t���nda olu�ur.
ERROR #17 : Illegal bit designator
Bir sembole uygun olmayan bit adresi atamaya �al���ld���nda olu�ur.
ERROR #18 : Target address exceeds relative adress range
SJMP , JZ, JNC gibi ba��l s��rama komutlar�n�n s��ran�lacak adresin 127 byte'� ge�ti�i durumlarda olu�ur.
ERROR #20 :Illegal Operant
Kullan�lan komut uygun de�il.
ERROR #21 :Illegal indirect register
R0 ve R1 haricinde indirect (dolayl�) adresleme yap�ld���nda olu�ur.
ERROR #22 :Missing operant delimiter
Virg�l� eksik komut kullan�lm��.
ERROR #24 :Attempting to EQUate a previosly SET Symbol
SET directive'i ile �nceden tan�mlanm�� sembol'�n EQU ile tekrar tan�mlanmak istendi�inde olu�ur.
ERROR # 25 :Attempting to SET a previosly EQUated Symbol
EQU directive'i ile �nceden tan�mlanm�� sembol'�n SET ile tekrar tan�mlamak istendi�inde olu�ur.
ERROR # 26 :Illegal SET / EQU expression
SET veya EQU directive'lerinden sonra uygun olmayan ifade kullan�lm��.
ERROR # 27 :Illegal expression with forward referans
�fadede hen�z tan�mlanmam�� bir sembol kullan�lm�� .
ERROR # 28 : Adress exceeds Adres range
Belirtilen adres 255'i a�m��
ERROR # 29 :Expecting an EOL or COMMEND
Derleyici bir sat�rdaki komutu derlerken derlenen komuttan sonra sat�r sona ermemi� ise olu�ur.
ERROR # 32 :Byte definition exceeds 255
DB directivite ile kullan�lan bir sabit 255'den b�y�kse olu�ur.
ERROR # 33 : Premature end of string
ASCII harfleri ile meydana gelmi� bir dizi uygun kesme ile sonland�r�lmam�� demektir.
ERROR # 35 :Include file nesting exceeds 8
$INCLUDE ( file ) kontrolu ile programa dahil edilen program par�alar�n�n say�s� 8 say�s�n� ge�erse olu�ur.
ERROR # 36 :Illegal or missing argument
Asembler kontrollerinde eksik veya yanl�� argument kullan�ld���nda olu�ur.
ERROR # 37 :Illegal control statement
Anla��lamayan kontrol ifadesi kullan�ld�. Eksik veya yanl�� olabilir.
ERROR # 38 :Unable to open file
Derlenecek olan dosya a��lamad�
ERROR # 40 :Program synchronization error
Program�n�zda ORG directivite'leri ile tan�mlad���n�z program haf�za adresleri birbirisi i�ine ge�erse ( yani kar���rsa ) olu�ur.
ERROR # 45 : Illegal or missing macro name
MACRO yaz�m� s�ras�nda; uygun olmayan sembol veya 2. defa kullan�lm�� sembol kullan�ld���nda olu�ur.
ERROR # 46 : Macro nesting too deep
Tan�mlanan macrolar 9. seviyeye a�t���nda olur.
ERROR # 47 :Number of parameters doesn't match defination
Macro da kullan�lan parametrelerin say�s� macro da kullan�lan parametrelerin say�s�na uygun olmad���nda olu�ur.
ERROR # 48 :Illegal parameter specification
Daha �nce tan�mlanm�� sembollerin macro i�erisinde de tan�mlanmaya �al���ld���nda olu�ur.
ERROR # 49 :Too many paremeters
Macrolar da kullan�labilecek maximum paremetre say�s� 16 'd�r.Bu say� a��ld���nda olu�ur.
ERROR # 50 :Line exceeds 255 characters
Program yaz�m� esnas�nda kullan�lan sat�r uzunlu�u 255 karekteri a�t���nda olu�ur.
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
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�i gibi y�ksek byte (HB) veya Low byte (LB) olarak da i�lenebilir.
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.
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.
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 programda 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
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
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
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 blo�unun olmas� zorunludur. �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 yoktur. 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, diger 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
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.
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)
Pc Tecnique Referance kitab�ndan al�nt�d�r.