PDA

View Full Version : جستجو و حذف فایل



prince_666
جمعه 04 آذر 1390, 15:18 عصر
سلام من یه برنامه نوشتم که مثلا یه فایل رو از یک دایرکتوری پیدا کنه و بعد پاکش کنه فایل رو پیدا میکنه ولی نمیدونم از چه دستوری استفاده کنم که فایلی که پیدا شده پشتش پاک بشه


mov ah,1ah
lea dx,dtanam
int 21h
jc l2
mov ah,4eh
mov cx,00h
lea dx,finder
int 21h
mov ah,41h
lea dx,dtanam
int 21h

lea dx,dtanam اینجا باید چی بزنم که فایلی که جستجو کرده رو بپاکه؟:ناراحت:
تو کتاب پیتر ابل اومده که مثلا lea dx,dtanam+1eh
ولی این دستور هم جواب نداده

xman_1365_x
جمعه 04 آذر 1390, 16:42 عصر
کدی که خودتون گذاشتین درسته!

Function 41h - Delete file

Action: Deletes a file from the specified or default disc and directory.
On entry: AH = 41h
DS.DX = Segment:offset of ASCIIZ file specification
Returns: Carry clear if successful, set if failed, when AX = Error code as follows:
2: File not found
5: Access denied
Notes: This deletes a file by deleting its directory entry. The ASCIIZ string specifying the file may not include wildcards. The function fails if:
Any part of the path does not exist.
The specified file has a read-only attribute.

1-اگر در امولاتور اجرا میکنید که درایو مجازی داره و روی اون تاثیر میزاره
2-اگر تحت کنسول اجرا میکنید مقادیر بازگشتی تابع 41 رو چک کنید ببنید چه مشکلی داره

موفق باشی

prince_666
جمعه 04 آذر 1390, 17:10 عصر
فایل سرچ میشه ولی پاک نمیشه باید ادرس جایی که فایل پیدا شده رو پیدا کنم ولی نمیدونم مکانش کجاست الان گیر اینم که ادرسی به dx بدم
تمام مغزم رو درگیر کرده هیچ جا هم نمیتونم پیداش کنم با masm و link میسازم....

xman_1365_x
شنبه 05 آذر 1390, 04:11 صبح
فایل سرچ میشه ولی پاک نمیشه باید ادرس جایی که فایل پیدا شده رو پیدا کنم ولی نمیدونم مکانش کجاست الان گیر اینم که ادرسی به dx بدم
تمام مغزم رو درگیر کرده هیچ جا هم نمیتونم پیداش کنم با masm و link میسازم....
خوب منم گفتم اول از تابع 41 خروجی هاشو تست کنید و اینکه به این تابع باید مسیر کامل فایل رو بفرستین تا حذف شه!
برای آدرس دهی هم شما یک مسیر رو میدین به 4eh براتون جستجو میکنه اگر پیدا کرد مسیر و نام فایل رو به تابع 41 میدین و فایل پاک میشه
در کتاب پیتر ایبل صفحه 314 یک مثال در این باره داره و همینطور در گوگل پر از نمونه برنامه

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

prince_666
شنبه 05 آذر 1390, 13:52 عصر
بله دوست عزیز من همون صفحه ۳۱۴ رو مطالعه کردم و به صورت single step مقادیر رو چک کردم ولی ارور های مربوطه نبودن
یک سوال ببین این فایلی که ۴۱ پیدا میکنه میشه ادرس کاملشو بدم به یک متغیر دیگه؟ و بعد اون متغیر که آدرس فایل جستجو شده در اون هست رو پاک کنه؟
با چه وقفه ای میشه اینکارو کرد؟

xman_1365_x
دوشنبه 07 آذر 1390, 17:00 عصر
یک سوال ببین این فایلی که ۴۱ پیدا میکنه میشه ادرس کاملشو بدم به یک متغیر دیگه؟ و بعد اون متغیر که آدرس فایل جستجو شده در اون هست رو پاک کنه؟
با چه وقفه ای میشه اینکارو کرد؟
تابع 41 چیزی پیدا نمیکنه فقط مسیر کامل بهش میدین تا حذف کنه نام درایو ،دایرکتوری مورد نظر و در نهایت نام فایل که همه اینها در یک آدرس از حافظه تعریف میکنید
پس در نهایت حتما باید آدرس کامل رو به 41 بفرستین تا فایل رو حذف کنه
موفق باشی