حتما با ثابتها در زبانهائی مثل پاسکال آشنائی دارید . بعنوان مثال با جمله
ے Const MaxLen=1024; ، ثابتی بنام MaxLen تعریف شده و مقدار آن برابر ۱۰۲۴ قرار
ے قرار میگیرد . پس از آن کامپایلر در هرجا که MaxLen را مشاهده کند عدد ۱۰۲۴ را
بجای آن قرار میدهد .
در زبان اسمبلی برای تعریف یک ثابت از معرفه EQU به شکل زیر استفاده میکنیم مقدار EQU نام ثابت
مثلا : MaxLen EQU 1024
ے به این ترتیب اسمبلر همیشه بجای MaxLen عدد ۱۰۲۴ را قرار میدهد . بهمین دلیل
ثابتهای برنامه را باید قبل از جمله 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 یک متغیر دو بایتی بوده و مقدار اولیه ان ۱۰۲۴ است و BELL نیز
یک متغیر تک بایتی با مقدار ۷ میباشد .
ے اگر نمیخواهیم به متغیر مقدار اولیه بدهیم ، میتوانیم از علامت (?) بجای مقدار
استفاده کنیم مانند : MaxLen DW ?
ے برای تعریف یک رشته کاراکتری از معرفه DB استفاده کرده و محتوای رشته را داخل
(”) یا (”") قرار میدهیم . مثلا :
MSG DB “ASSEMBLY / A QUICK LOOK ! “
ے در این مثال MSG یک متغیر کاراکتری است . در اسمبلی میتوانیم از کد اسکی
ے کاراکتر ها نیز استفاده کنیم . مثلا اگر در تعریف DB بخواهیم کدهای اسکی ۱۳و ۱۰
را به 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 )
که ارایه ای یک کیلوبایتی تعریف کرده و همه عناصر آن را با ۰ پر میکند.
اگر نخواهیم مقدار اولیه ای در نظر گرفته شود از ? استفاده میکنیم .
مانند: 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 از قسمت تعریف داده ها پرش کرده ایم .
در قسمت بعد نحوه استفاده از متغیرها و بافرها (Buffers) را مطالعه
میکنیم . با همین معلومات برنامه ای برای نمایش محتوای سکتوهای دیسک
مینویسیم و پیغامهای لازم را به آن اضافه میکنیم .
علاقه مندی ها (Bookmarks)