PDA

View Full Version : رفع مشکل این برنامه؟؟؟؟؟؟



sang9111
سه شنبه 10 اردیبهشت 1387, 01:35 صبح
با سلام
می خواستم ببینم عیب این برنامه کجاست
این یه برنامه هست که از طریق وقفه اطلاعاتی در مورد موقعیت کنونی موس می ده

sang9111
سه شنبه 10 اردیبهشت 1387, 01:40 صبح
آخ ببخشید اینم کدش:

#include <stdio.h>

int main()
{
int i;
int x,y;

for (i=0;i<10;i++)
{

__asm {

mov ax, 03h
mov y, dx
mov x, cx
int 33h

}

printf("x=%d .... y=%d",x,y);

}

return 0;
}

hoax3r
سه شنبه 10 اردیبهشت 1387, 19:55 عصر
با سلام

شما اصلا مشخص نکردی کامپایلرت چیه، تو چه محیطی داری کار میکنی
فقط در مورد کدتون بگم شما بعد اینکه وقفه رو صدا زدین باید x, y رو مقدار دهی کنید. نه قبلش
وقفه ها هم تو کامپایلر های 32 بیتی کار نمیکنن
اگر هم از TC استفاده می کنید من خودم تست نکردم مطمعن نیستم ولی فکر میکنم به جای asm__ باید از asm خالی بدون آندرلاین استفاده بشه

موفق باشید

sang9111
سه شنبه 10 اردیبهشت 1387, 21:53 عصر
کامپایلرم vitual c++ ووو من در محیط cmd ویندوز از وقفه استفاده کردم برای تغییر رنگ دادن محیط cmd ووووو همچنین در یکی مثال های کتاب هم دیدم که ثبات ها رو قبل وقفه صدا می کنن البته برای یک کاره دیگه در هر حال کمک کنید

Delphi Coder
سه شنبه 10 اردیبهشت 1387, 23:29 عصر
کامپایلرم vitual c++ ووو من در محیط cmd ویندوز از وقفه استفاده کردم برای تغییر رنگ دادن محیط cmd ووووو همچنین در یکی مثال های کتاب هم دیدم که ثبات ها رو قبل وقفه صدا می کنن البته برای یک کاره دیگه در هر حال کمک کنید
یه اعلان تو همین بخش هست که برنامه HelpPC اونجا ضمیمه شده از اون برنامه اطلاعات مربوط به وقفه و تابعی که استفاده کردید رو بخونید شماره تابع در ax به عنوان ورودی باید پاس بشه و cx و dx خروجی اون تابع از وقفه هستند. پس باید بعد از فراخوانی وقفه مقدارشون رو بخونید, قبل از اون معنی نمیده.

hoax3r
سه شنبه 10 اردیبهشت 1387, 23:30 عصر
خوب شما اگه می خوای C و اسمبلی و همچنین وقفه ها رو با هم ترکیب کنید باید از کامپایلری مثل Turbo C 3 استفاده کنی.
چون با ++visual c نمی شه با وقفه کار کرد و این کامپایلر بر پایه API های ویندوز هست
در ضمن من که نگفتم وقفه ها تو cmd اجرا نمیشن. اجرا میشن ولی نه به اون صورت که تو
داس پشتیبانی میشد و همچنین کامپایلر های تحت ویندوز هم وقفه ها رو پشتیبانی نمیکنن

و در مورد مقدار دهی ثباتها، درست خق با شماسته بعضی وقفه ها قبل اجرا شدن به مقادیر بعضی از ثباتها احتیاج
دارن برای همین اون ثباتها قبل وقفه باید مقدار دهی بشن
ولی منظور من مقدار دهی متغییر های x, y بود شما باید اول وقفه رو اجرا کنی تا موقعیت موس
داخل ثباتهای cx, dx بشه بعد بیایم و متغییر های x, y رو مقدار دهی کنیم

شاد باشید