PDA

View Full Version : آموزش: ارتباط با فایل



saber187518
سه شنبه 28 دی 1389, 11:25 صبح
با سلام دوستان عزیز
من میخوام یه برنامه به زبان اسمبلی بنویسم که اطلاعاتی رو درون یک فایل متنی ذخیره کنه و بعد با توجه به درخواست کاربر بر روی اون اطلاعات کارهایی رو انجام بده.
دیشب توی سایت یه چرخی زدم. نمونه برنامه برای این کار بود. اما من نتونستم تجزیه و تحلیل کنم. و از اونجایی که میخوام ایت برنامه رو خودم بنویسم ، از شما خواهش می کنم که تمامی دستورات ارتباط با فایل رو به طور کامل و تک به تک و با جزئیات توضیح بدید ( اگه لطف کنید ).:بوس:
منتظر بزرگواری شما دوستان عزیز هستم.
یا علی...

xman_1365_x
پنج شنبه 30 دی 1389, 18:53 عصر
اگر چيز ديگه هم مي خواين بگين :لبخندساده:
شما مشخص نكردين در اسمبلي 32 بيتي يا 16
اگر 16 هست برين دنبال وقفه هاي كار با فايل
اگر 32 برين دنبال كار با api هاي كار با فايل
مرجع وقفه هاي بايوس و داس قبلا گذاشته شده
مرجع api ويندوز هم در msdn مايكروسافت!

saber187518
جمعه 01 بهمن 1389, 14:55 عصر
ممنون از پاسخگویی شما به این تاپیک.
تونستم بالاخره کارم رو انجام بدم.
و در پست بعدی هم شروع به آموزش همین برنامه میکنم و قسمت به قسمت آموزشش میدم.
یا علی...

saber187518
شنبه 02 بهمن 1389, 15:18 عصر
با سلام خدمت تمامی عزیزان سایت برنامه نویس.
برای اینکه بتونیم در زبان اسمبلی با یک فایل متنی ارتباط برقرار کنیم
و اطلاعات رو در اون بریزیم و یا بخونیم باید یک سری قواعد و قوانین رو رعایت کنیم.
اولین چیز اینه که من دارم با MASM611 کد مینویسم.
و به زودی کامپایلر رو برای دوستان عزیزی که ندارنش آپلود می کنم.
خوب بریم سر کار اصلیمون...
اولین کاری که باید انجام بدیم اینه که یک متغیر رو برای نگهداری آدرس فایل مورد نظرمون تعریف کنیم.
که برای انجام این کار میتونیم از مثال زیر استفاده کنیم.


PATHNAME1 DB 'D:\DATA.TXT',00H

بعد از اینکه چنین کاری رو انجام دادیم
باید فایل رو باز کنیم.
برای باز کردن فایل باید به روش زیر عمل کنیم.


MOV AH,3DH
MOV AL,00
LEA DX,PATHNAME1
INT 21H

بعد از اینکه این دستورات را نوشتیم باید یک فایل هندل تعریف کنیم. که به روش زیر عمل میکنیم.
ابتدا باید در قسمت متغیرها متغیری را با مذمون زیر تعریف کنیم.


FILEHANDLE1 DW ?

و باید به متغیر تعریف شده مقدار دهیم. که این مقدار دهی بعد از باز کردن فایل انجام میگیرد.


MOV FILEHANDLE1,AX

بقیش باشه تا بعد.
یا علی...

saber187518
یک شنبه 03 بهمن 1389, 10:47 صبح
با سلام دوباره
عزیزان وقتی که فیل هندل رو هم تعیین کردیم حالا نوبت به کار کردن با فایل می رسه.
به قطعه کد زیر توجه کنید.


MOV AH,3FH
MOV BX,FILEHANDLE1
MOV CX,25
LEA DX,DATA_ARRAY[SI]
INT 21H

در قطعه کد بالا و اولین سطر شما درخواست خواندن یک رکورد را میدهید. اما از کدام فایل؟
که در خط دوم فایل هندل مورد نظر نیز تعیین گردیده است.
سپس شما در سطر سوم باید تعیین کنید که رکوردی را که میخواهید بخوانید چقدر طول دارد
که در مثال مفروض 25 بایت است. سپس در سطر بعد آدرس متغیری را که قرار است اطلاعات خوانده شده از فایل را در آن ذخیره کنیم قرار میدهیم.
و در نهایت با فراخوانی کردن وقفه دستور مورد نظر اجرا گردیده و اطلاعات به اندازه یک رکورد از فایل خوانده می شود.
البته توجه داشته باشید که بعد از اجرای دستورات فوق اشاره گر فایل به ابتدای 26امین کاراکتر می رود.
فعلا یا علی...