PDA

View Full Version : سوال: استفاده از timer در اسمبلی (تکرار دستورات برنامه ی من در یک زمان مشخص)



kamran_14
دوشنبه 19 دی 1390, 09:17 صبح
ببخشید
می خوام در یک زمان مشخصی برنامه ی من تکرار بشه (مثل تایمر)
فکر می کنم از این کدها باید استفاده کنم ولی منظورش را خوب متوجه نشده ام می شه کمکم کنید؟
فرض کنیم ما برنامه یا روتینی داریم به نام my_intr می خواهیم این روتین را به جای روتین وقفه int 1ch اجرا نماییم در اینصرت دستورات زیر را می نویسیم.


1) Mov ah,25h
2) Mov al,1ch
3) Mov dx,offset my_intr
4) Mov bx,seg my_intr
5) Mov ds,bx
6) Int 21h

1) سرویس 25h را برای قرار دادن آدرس جدید در بردار وقفه فعال کن
2) افست برنامه ما را به جای آدرس وقفه شماره 1ch در نظر بگیر
3) افست برنامه ما my_intr را در ثیات dx قرار بده
4) سگمنت برنامه ما my_intr را در ثبات bx قرار بده.
5) سگمنت برنامه ما را به ثبات ds منتقل کن.
6) دستور int 21h را فعال کن.
آیا این کدها نیاز منو برطرف می کنند

IamOverlord
جمعه 23 دی 1390, 12:02 عصر
دقیقا در چه محیطی می خواید چی کار کنید؟

kamran_14
یک شنبه 25 دی 1390, 19:35 عصر
دقیقا در چه محیطی می خواید چی کار کنید؟

در محیط debug می خوام دستورات در یک فاصله زمانی مشخص تکرار شوند

IamOverlord
یک شنبه 25 دی 1390, 23:47 عصر
اون کد برای تکرار نیست بلکه برای set کردن یه وقفه ی جدید هست.
اطلاعات بیش تر در این جا (http://stanislavs.org/helppc/int_21-25.html).
اگر هم منظورتون برنام هایی شبیه VB6 هست که از کنترل Timer استفاده می کنند. در Assembly 16-bit بی خیال شید، این کار با Multithreading صورت می گیره که یا در محیط سیستم عامل هست که باید از سرویس هایی که سیستم عامل در اختیارتون می ذاره در Assemnly 32-bit استفاده کنید، یا در محیط سخت افزار هست که باید از حالت Real Mode وارد حالت Protected Mode بشید و از Multitasking استفاده کنید.
وگرنه باید به طور دستی با همین روش عادی که در هر لحضه فقط یه کد اجرا می شه اون کارار رو شبیه سازی کنید که ... .

xman_1365_x
دوشنبه 26 دی 1390, 03:35 صبح
برنامتون رو در يك حلقه بزارين كه اگر زمان برابر با زمان شما بود زير برنامتون اجرا بشه
وقفه زمان هم اگر جستجو كنيد در سايت هست
موفق باشي