17
Məsələn:
F1 EQU EBX ; EBX registri F1 adına
; mənsub etdirilir
F2 EQU 366 ;
konstanta ad verilir
F3 EQU 3 *F2 ; ədədi ifadəyə ad verilir
F4=366 ;
konstanta ad verilir
F5=93 ; konstanta ad verilir
F6=F5 – 12 ; ədədi ifadəyə ad verilir
AD EQU ‘mətn sətri’
Table EQU DS:[BP][SI]
AS EQU ‘Assembler’
Verilənlərrın təyini direktivlərı
Bir çox proqramlarda yaddaş xanalarına müəyyən qiymətlər mənimsətmək və ya yaddaş
xanalarını ehtiyata almaq lazım gəlir. Belə
hallarda D
*
[Define
*
] direktivindən istifadə edilir.
Verilənlərin təyini və ehtiyat sahələrinin ayrılması direktivlərinin formatı aşağıdakı kimidir:
[ad] D* ifadə [,ifadə ].. .
Burada D* aşağıdakı formalardan biri kimi göstərilə bilər:
-DBİT- bit verilən üçün yaddaş sahəsi ayırır
-DB- verilən üçün yaddaşda 1 bayt sahə ayırır
-DW- verilən üçün yaddaşda 2 bayt sahə ayırır
-DD- verilən üçün yaddaşda 4 bayt sahə ayırır
-DF- verilən üçün yaddaşda 6 bayt sahə ayırır
-DP- verilən üçün yaddaşda 6 bayt sahə ayırır
-DQ- verilən üçün yaddaşda 8 bayt sahə ayırır
-DT- verilən üçün yaddaşda 10 bayt sahə ayırır.
ad – proqramda istifadə olunan verilənlər seqmentindəki nişanın və ya yaddaş xanasının
simvolik adıdır.
İfadə – sual işarəsindən (?), sabit və sabitlər ardıcıllığından ibarət ola bilər. Sabitlər bir-birindən
vergül işarəsi ilə ayrılırlar. Əgər ifadə sual (?) işarəsi olarsa dəyişənə başlanğıc qiymət verilmir,
amma ehtiyat yaddaş sahəsi ayrılır.
DBIT –1 və ya 32 –yə qədər bitlər ardıcıllığı olub, “B” simvolu ilə bitməlidir. Məsələn:
SAY DBIT 100B ; baytda 00000100
TABLO DBİT 3 DUP (101B)
Əgər verilənin qiyməti dövrü olaraq təkrarlanarsa, onda bu verilənləri n DUP (x) kimi təyin edə
bilərik. Burada n tam ədəd olub təkrarlanma sayını göstərir.
DB – bir bayta və ya bir baytlıq sahələr ardıcıllığını göstərir. Məsələn:
A DB ? ; A üçün 1 bayt yaddaş sahəsi ayrılır
SAY DB 64 DUP (‘YAZI’) ; SAY üçün ; 256 bayt yaddaş sahəsi ayrılır
SYMBOL DB ‘Z’
Text DB ‘program’
M DB 47H
TABLO DB 14, 15, 16, 30, 57, 78, 77, 54 ;TABLO
; üçün 8bayt yaddaş sahəsi ayrılır.
DW –2 bayt (söz) uzunluqlu dəyişəni və ya dəyişənlər ardıcıllığını təyin edir. Bir sözdə 0-
0FFFFH 16 –lıq ədəd və ya 0-65535 onluq ədəd göstərilə bilər. Məsələn:
AA DW ?
A DW 25 DUP (0F1A8H)
SAY DW 452
Yaddaşın adr, adr_full ünvan xanalarında dəyişənlərin yerləşməsinin proqram fraqmentinə
baxaq:
Perem_1 DB 0FFh
Perem_2 DW 3A7Fh
18
Perem_3 DD 0F54D567Ah
Mas DB 10 DUP (“ “)
Adr DW Perem_3
Adr_full DD Perem_3
Aşağıdakı şəkildə yuxarıdakı verilənlərin DS registri ilə təyin olunmuş yaddaş ünvanından
başlayaraq yerləşməsinin ardıcıllığı göstərilmişdir (DUMP-ı).
Bu yaddaş dampına izahat verək. Göründüyü kimi verilənlər seqmenti ilə təyin edilən baza
ünvanına nəzərən 0000 sürüşməsi ilə baytda simvolik adı perem_1 olan verilən yerləşir. Bu baytın
məzmunu FFh-dır. Sonra isə söz uzunluqlu (iki bayt) perm_2 dəyişəninin qiyməti gəlir. Əvvəlcə
qiyməti 7Fh olan bayt(ədədin kiçik hissəsi) sonra isə qiyməti 3Fh olan bayt(ədədin böyük hissəsi)
gəlir. Analoji olaraq demək olar ki, perm_3 dəyişəninin qiymətləri 3-cü baytdan başlayaraq
yerləşir. Mas adlı dəyişənin qiymətləri 7-ci baytdan başlayır və on dənə boşluq simvolundan (16-
lıq kodu 20h-dır) ibarətdir. Proqram fraqmentinin növbəti iki sətrində DW və DD direktivlərinin
operandlar sahəsində digər insiallaşdırma və ehtiyata alma direktivinin simvolik adından istifadə
edilmişdir. Bunlar
adr və
adr_full adlı direktivlərdir. Bildiyimiz kimi hər bir ünvan iki
komponentdən təşkil olunur: blokun nömrəsindən (seqmentin başlanğıc ünvanı) və başlanğıca
nəzərən sürüşmədən. Əgər nişan tələb olunan əmrlə eyni seqmentdə yerləşərsə,
onda ancaq
sürüşməni göstərmək kifayətdir. Sürüşmənin uzunluğu 16 bitə bərabər olduğundan onun
saxlanılması üçün DW direktivindən istifadə etmək lazımdır. Ona görə də