حتما با ثابتها در زبانهائي مثل پاسكال آشنائي داريد . بعنوان مثال با جمله
ے Const MaxLen=1024; ، ثابتي بنام MaxLen تعريف شده و مقدار آن برابر 1024 قرار
ے قرار ميگيرد . پس از آن كامپايلر در هرجا كه MaxLen را مشاهده كند عدد 1024 را
بجاي آن قرار ميدهد .
در زبان اسمبلي براي تعريف يك ثابت از معرفه EQU به شكل زير استفاده ميكنيم
مقدار EQU نام ثابت
مثلا : MaxLen EQU 1024
ے به اين ترتيب اسمبلر هميشه بجاي MaxLen عدد 1024 را قرار ميدهد . بهمين دليل
ثابتهاي برنامه را بايد قبل از جمله CODE. بنويسيم . مثال :
. MODEL SMALL
SECTORS EQU 18
SIDES EQU 2
. CODE
:
:
ے به اين خاطر ثابتها را قبل از CODE. تعريف ميكنيم كه در برنامه كامپايل شده اثري
از نام ثابت نبوده بلكه مقدار هر ثابت در جاي لازم قرار گرفته است .
مثال :
. MODEL SMALL
BELL EQU 7
. CODE
ORG 100H
MOV AH/0EH
MOV AL/BELL
INT 10H
INT 20H
END
متغيرها
ے از متغيرها براي نگهداري موقتي داده ها استفاده ميكنيم . مثلا در زبان پاسكال
ے ميتوانيم با عبارت Var يك متغير تعريف كنيم مثل Var Buffer:Byte; و در زبان
سي مثل unsigned char Buffer; .
ے متغيرها در زبان اسمبلي بايد حتما در داخل قطعه داده (DS) تعريف بشوند و در
ے برنامه هاي COM. هم از آنجائي كه قطعه داده ها و كد يكي است ميتوانيم در قطعه كد
نيز تعريف كنيم .
ے براي تعريف يك متغير بايد بعد از نام آن يكي از عبارات ..DB/DW/DD/ را
ے بياوريم . DB مشخصه نوع بايت ،DW مشخصه نوع Word (دوبايتي ) و DD مشخصه نوع
(Double Word) 4 بايتي است .
مثلا :
. CODE
SIZE DW 1024
BELL DB 7
ے در اين مثال Size يك متغير دو بايتي بوده و مقدار اوليه ان 1024 است و BELL نيز
يك متغير تك بايتي با مقدار 7 ميباشد .
ے اگر نميخواهيم به متغير مقدار اوليه بدهيم ، ميتوانيم از علامت (?) بجاي مقدار
استفاده كنيم مانند : MaxLen DW ?
ے براي تعريف يك رشته كاراكتري از معرفه DB استفاده كرده و محتواي رشته را داخل
('') يا ("") قرار ميدهيم . مثلا :
MSG DB "ASSEMBLY / A QUICK LOOK ! "
ے در اين مثال MSG يك متغير كاراكتري است . در اسمبلي ميتوانيم از كد اسكي
ے كاراكتر ها نيز استفاده كنيم . مثلا اگر در تعريف DB بخواهيم كدهاي اسكي 13و 10
را به MSG اضافه كنيم ميتوانيم با كاما اين كار را انجام دهيم :
MSG DB "ASSEMBLY / A QUICK LOOK ! "/13/10
يا : MSG DB "ASSEMBLY / A QUICK LOOK ! "/0Ah/0Dh
يا حتي : MSG DB "ASSEMBLY / A QUICK LOOK ! "/0Ah/0Dh/'$'
اين تركيبها همه يك رشته كاراكتري معرفي ميكنند .
براي تعريف آرايه ها نيز از روشي مشابه و به شكل زير استفاده ميكنيم :
(مقدار اوليه )DUP تعداد عناصر DB/DW/DD نام متغير
مانند: BUFFER DB 1024 DUP(0 )
كه ارايه اي يك كيلوبايتي تعريف كرده و همه عناصر آن را با 0 پر ميكند.
اگر نخواهيم مقدار اوليه اي در نظر گرفته شود از ? استفاده ميكنيم .
مانند: BUFFER DB 1024 DUP(? )
و براي تعريف يك آرايه حرفي بايد با يك حرف يا عبارت آن را پر كنيم : BUFFER DB 1024 DUP("A" )
و حتي : BUFFER DB 1024 DUP("STACK" )
ے گفتيم كه متغيرها هميشه (در برنامه هاي COM.) در قطعه كد و بعد از CODE. نوشته
ے ميشوند ، بنا براين اسمبلر هميشه سعي خواهد كرد كه آنها را بصورت يك كدماشين
ے قابل اجرا تفسير كند. به همين دليل هميشه بايك دستور JMP از روي آنها پرش
ميكنيم . مثال :
. MODEL SMALL
RDISK EQU 2
. CODE
ORG1 100H
START :
JMP MAIN
BUFFER DB 512 DUP(0 )
MSG DB "DISK DUP."/13/10/'$'
MAIN :
مجموعه كدهاي اجرايي برنامه :
: END START
همانطور كه ميبينيد با دستور JMP MAIN از قسمت تعريف داده ها پرش كرده ايم .
علاقه مندی ها (Bookmarks)