# برنامه نویسی سطح پایین > برنامه نویسی اسمبلی خانواده x86 >  ایجاد وقفه چند ثانیه ای

## mehdi.offline

با سلام به دوستان و اساتید 
من یه مشکلی دارم اون هم اینه که نمی تونم یه وقفه چند ثانیه ای در اسمبلی ایجاد کنم 
یه پروژهای استادمون به ما داده اون هم اینه که  پورت پرینتر رو به 8تا دیود وسل کنیم با باهاش رقص نور بسازیم من با این دستورات 
 #include <stdio.h>
#include <conio.h>

int main(void)
{
 asm{
    mov al,11111111b
    mov dx,378h
    out dx,al
    }
}میتونم LED هارو روشن و خاموش کنم .
ولی می خام بعد روشن شودن اولین چراغ بغیه رو با یه فاصله زمانی مشخص تغییر بدم 
استادمون گفته می تونیم یه حلقه ایجاد کنید و زمان سیستم رو بگیریم و بعد در یه متغیر دیگه زمان رو با 2 جمع کنیم و در حلقه قرار بدیم . ولی نتونستم این کارو بکنم لتفا کمکم کنید.
 :گریه:

----------


## aakh1361

البته من این رو تست نکردم ولی فکر کنم کار کنه
#include <stdio.h>
#include <dos.h>
#include <conio.h>

void LED(char n)
{
   asm mov dx,378h
   asm in ax,dx
   asm mov bx,ax
   asm mov ax,1
   asm mov cl,n
   asm shl ax,cl
   asm or ax,bx
   asm out dx,al
};

int Reply=10;
int Delay=250;

int main(void)
{
 for(;Reply>0;Reply--)
  {
    LED(0);
      delay(Delay);
    LED(2);
      delay(Delay);
    LED(4);
  }
}

----------


## pcmcia

86h   از این تابع   کمک بگیر

----------


## raha_hakhamanesh

با سلام
این کد کوتاه برای ایجاد تاخیر است می تونید از اون استفاده کنید 

    PUSH    AX
    MOV    BX,X مثلا=10
MOV AX,800
    MUL    BX
MOV CX,AX
WAIT:    IN    AL,61H
    AND    AL,10H
    CMP    AL,AH
    JE    WAIT
    MOV    AH,AL
    LOOP    WAIT
    POP    AX

موفق باشید

----------


## rainstorm

سلام
خوبی
دمت گرم برنامتو همین الان تست کردم عالی کار می کنه ظاهراً هر یک ثانیه تکرار میشه
مرثی عزیز

----------

