نمایش نتایج 1 تا 2 از 2

نام تاپیک: جلوگیری از Not Responding

  1. #1
    کاربر دائمی آواتار teardrop
    تاریخ عضویت
    مهر 1388
    محل زندگی
    همدان
    پست
    139

    Question جلوگیری از Not Responding

    به نام خدا
    سلام
    چطوری میشه از Not Responding جلوگیری کنم.

    مثل این سورس کد، که وظیفه داره بوق کامپیوتر رو به صدا در بیاره تا زمانی که کلیدی فشرده نشه.



    PAGE 110,100
    TITLE 'KEY_DET4.ASM' detect a special key
    ;-----------------------------------------------
    ;
    ; Defining Segment of Program
    ; ----------------------------
    CODESG SEGMENT PARA 'CODE'
    ASSUME SS:CODESG,DS:CODESG,CS:CODESG
    ORG 100H
    START: JMP MAIN ;1-Jump DATA
    ;-----------------------------------------------
    MESSAGE DB 'to stop bell press Q or ESC','$'
    ;-----------------------------------------------
    ;
    MAIN PROC NEAR
    MOV AH,09H ;2-Service 9 interupt
    LEA DX,MESSAGE ;3- 21H to write MESSAGE
    INT 21H ;4- on monitor
    NO_KEY: MOV AH,02H ;5-Service 2 interupt
    MOV DL,07H ;6- 21H for writting a
    INT 21H ;7- character on monitor
    MOV AH,01 ;8-Service 1 interupt 16H
    INT 16H ;9- for detecting a key
    JZ NO_KEY ;10- if no key go NO_KEY
    MOV AH,00 ;11-Else determine which
    INT 16H ;12- key is preesed
    CMP AL,'Q' ;13-If pressed key is
    JE EXIT ;14- is Q go to EXIT
    CMP AL,27 ;15-If pressed key is Esc
    JE EXIT ;16- go to EXIT
    JMP NO_KEY ;17-Else back to NO_KEY
    EXIT:
    MOV AX,4C00H ;18- End of
    INT 21H ;19- processing
    MAIN ENDP ; End of procedure
    CODESG ENDS ; End of segment
    END START ; End of program
    این کار رو در زبانهای سطح بالا می تونیم با تایمر یا چند نخی استفاده کنیم.
    با تشکر



  2. #2

    نقل قول: جلوگیری از Not Responding

    چون برنامتون کوتاه هست و پردازنده میلیون ها دستور رو توی یک ثانیه اجرا میکنه برای همین شما نمی تونید چیزی وارد در بافر کنید برای همین برنامه هنگ میکنه
    راه حلش اینه تاخیری بین دو کد کد قرار بگیره یا با نوشتن کد های دیگه مثل حلقه های هرز برای گذر زمان یا استفاده از وقفه ، برای ایجاد وقفه با زمان که من یک نمونه با تاخیر یک ثانیه براتون نوشتم که برنامه Not Responding نشه

    PAGE 110,100
    TITLE 'KEY_DET4.ASM' detect a special key
    ;-----------------------------------------------
    ;
    ; Defining Segment of Program
    ; ----------------------------
    CODESG SEGMENT PARA 'CODE'
    ASSUME SS:CODESG,DS:CODESG,CS:CODESG
    ORG 100H
    START: JMP MAIN ;1-Jump DATA
    ;-----------------------------------------------
    MESSAGE DB 'to stop bell press Q or ESC','$'
    ;-----------------------------------------------
    ;
    MAIN PROC NEAR
    MOV AH,09H ;2-Service 9 interupt
    LEA DX,MESSAGE ;3- 21H to write MESSAGE
    INT 21H ;4- on monitor
    NO_KEY:
    MOV AH,02H ;5-Service 2 interupt
    MOV DL,07H ;6- 21H for writting a
    INT 21H ;7- character on monitor

    ;wait 1 second
    mov ah,2ch
    int 21h
    mov bl,dh
    inc bl
    again:
    mov ah,2ch
    int 21h
    cmp bl,dh
    jne again


    MOV AH,01 ;8-Service 1 interupt 16H
    INT 16H ;9- for detecting a key
    JZ NO_KEY ;10- if no key go NO_KEY

    MOV AH,00 ;11-Else determine which
    INT 16H ;12- key is preesed
    CMP AL,'Q' ;13-If pressed key is
    JE EXIT ;14- is Q go to EXIT
    CMP AL,27 ;15-If pressed key is Esc
    JE EXIT ;16- go to EXIT
    JMP NO_KEY ;17-Else back to NO_KEY
    EXIT:
    MOV AX,4C00H ;18- End of
    INT 21H ;19- processing
    MAIN ENDP ; End of procedure
    CODESG ENDS ; End of segment
    END START ; End of program

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •