nexpay

اسمبلی کاراش کمک کنن

شروع موضوع توسط HACKER_BEREFIN ‏8 دسامبر 2005 در انجمن برنامه نویسی

  1. HACKER_BEREFIN

    HACKER_BEREFIN کاربر تازه وارد

    تاریخ عضویت:
    ‏10 می 2004
    نوشته ها:
    13
    تشکر شده:
    0
    من یه برنامه می خوام بنویسم که دو تا led را به ترتیب روشن کنه ....

    1) تحت DOS نمی تونم با out با پورت 378 ( پورت پرینتر ) ارتباط برقرا کنم .... یعنی هیچ دیتایی نمی فرسته ..
    2) تحت DOS می خواهم یه مقدار مکس کنه ... ( 2 ثانیه ) بعد LED بعدی روشن بشه
    3) تحت ویندوز می خواهم یه dll رو صدا بزنم که یکی از توابعش دو تا ورودی داره مثل OUT32 port,data اینو چطوری باید تعریف کنم و چطوری باید صدا بزنم ....

    خواهش میکنم اگه میتونید زود جواب بدید ..
    ÷یشا÷یش متشکرم ....
     
  2. najafzadeh

    najafzadeh کاربر فعال پایگاه داده ها کاربر فعال

    تاریخ عضویت:
    ‏21 سپتامبر 2005
    نوشته ها:
    512
    تشکر شده:
    26
    محل سکونت:
    قزقلعه
    اول یک کم میکرو کنترلر 8051 رو بررسی کن.
    بعد کمی هم برنامه نویسی assembly باید بلد باشی.
    بعد با یک برنامه که دارای دو حلقه تکرار با دستورات jnz و label می توانی led را تا مدتی که بخواهی روشن کنی.
     
  3. saeedsmk

    saeedsmk مدیر بازنشسته

    تاریخ عضویت:
    ‏6 سپتامبر 2003
    نوشته ها:
    1,519
    تشکر شده:
    4
    يه توضيحي ميدي در مورد سئوال اول و دومت درست نفهميدم توي چه داسي( شبيه سازي شده و يا داس 6.2) و چه پرينتري و ...
    اما اگه قسمت سوم رو درست فهميده باشم يعني يه تابع رو بايد صدا يزني
    خوب اول بايد اين كار رو بكني : سر فصل اون رو ببري توي حافظه براي اين كار فرض ميكنم فايلت به نام mydll.dll باشه و اسم تابع myfunction با دو تا متغيير p1, p2 كه اينجوري بايد اينجوريش صداش بزني
    کد:
     myfunction p1,p2
    
    خوب كدت ميشه اين
    کد:
    push offset "mydll.dll"                ; name of your dll
    call LoadLibraryA 
    mov  esi, eax                          ; store handle in esi
    push offset "myfunction"               ; name of your function
    push eax
    call GetProcAddress
    push p2                                ; function expects 2 parameter
    push p1                                ; function expects 1 parameter
    call eax                               ; call your function
    add  esp, 4                            ; adjust the stack if necessary
    push esi
    call FreeLibraryA                      ; Free mempry 
    
    
    اميدوارم كمك كنه
    :lol:
     
  4. HACKER_BEREFIN

    HACKER_BEREFIN کاربر تازه وارد

    تاریخ عضویت:
    ‏10 می 2004
    نوشته ها:
    13
    تشکر شده:
    0
    اقا سعيد از راهنميتون ممنون
    ولي اين دوستورات من قبلٌ نوشتم ولي بازم جواب نگرفتم يه نگاهي به اين دستو.رات بنداز
    کد:
    .data 
    MsgBoxCaption  db "LED BLinker Ver.1",0 
    Msg1           db " ------ Wellcome To LED Blinker ------ ",0 
    Msg2           db "This programm Created By Mahdei Farhani & Hamir Reza firoozy !!!",0
    Msg3           db "This Aplaction Created By Masm32 Ver 8.2 ....",0
    
    ClassName db "LEDBlinker",0
    AppName db "LED Blinker",0
    
    TimerID        dd 0 
    Libname db "Inpout32.dll",0
    FunctionName db "Out32",0
    DllNotFound db "Cannot Load Library",0
    FunctionNotFound db "Error In Open Function OUT",
    
    .DATA?                ; Uninitialized data 
    hInstance HINSTANCE ?        ; Instance handle of our program 
    CommandLine LPSTR ? 
    hLib dd ?
    OutAddr dd ?
    
    
    ;
    
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;
    ;                                                                        ;  
    
    ;                                                                        ;
    
    ;                        Start The Code Segment                          ;
    
    ;                                                                        ;
    
    ;                                                                        ;
    ;
    
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;
    
    .code 
    start: 
    
    ;////////////////////////////////////////////////////////////////////////;
    
    ;                  Show The Message Box In Load programm                 ;
    ;////////////////////////////////////////////////////////////////////////;
    
        invoke MessageBox, NULL, addr Msg1, addr MsgBoxCaption, MB_OK
        invoke MessageBox, NULL, addr Msg2, addr MsgBoxCaption, MB_OK + MB_ICONINFORMATION
        
    invoke MessageBox, NULL, addr Msg3, addr MsgBoxCaption, MB_OK + MB_ICONINFORMATION
        invoke LoadLibrary,addr Libname
        .if eax==NULL
            invoke MessageBox,NULL,addr FunctionNotFound,addr AppName,MB_OK + MB_ICONSTOP
        .else
    
            mov hLib,eax
            invoke GetProcAddress,hLib,addr FunctionName
            .if eax==NULL
                invoke MessageBox,NULL,addr FunctionNotFound,addr AppName,MB_OK + MB_ICONSTOP
            .else
                mov OutAddr,eax
    push 378
    push 1
                call OutAddr
             .endif
        .endif
        invoke FreeLibrary,hLib
    
    
    ببين مشكل از كجاي ( البته با تعريف شما در صدا زدن تابع فرق ميكنه ..........
    //////////////////////////////////
    سوال اولم هم در dos 6.2 است كه با بوت ويندوز بوت شده ...
    با برنامه DEBUG جواب ميگيرم و فايل com هم ايجاد ميكنم ولي بد بختي اينه كه استادم گفته بايد حتماٌ exe باشه ..
    من شك دارم به MASM كه نميتونه درست كار كنه وبرنامه كال كامپايل ميشه و هميچ مشكلي نداره ولي هيچ ديتايي رو پورت نمي فرسته ....
    پورت پرينتر هم داخل SETUP از نوع ECP تنظيم كردم ......
     
  5. saeedsmk

    saeedsmk مدیر بازنشسته

    تاریخ عضویت:
    ‏6 سپتامبر 2003
    نوشته ها:
    1,519
    تشکر شده:
    4
    ببين عزيز كدي كه دادي رو دستگاه من كار نميكرد چون Inpout32.dll رو نداشتم من يه نغييراتي دادم تا بتون فانكشن beep رو صدا بزنم و برات توضيحاتم دادم
    اينم كدش و اگه تونستي اين فايل Inpout32.dll رو بذار تا بتونم ببنم مشكل از كجاست .
    ميتوني سورس برنامه اگزت رو كه براي dos نوشتي بزاري تا ببنم اشكال از كجاست .....
    کد:
    .386
    .model flat,stdcall
    option casemap:none 
    ; #########################################################################
    include \masm32\include\windows.inc
    include \masm32\include\user32.inc
    include \masm32\include\kernel32.inc
    include \masm32\include\gdi32.inc
    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\kernel32.lib
    
    ; #########################################################################
    ; #########################################################################
    .data 
    MsgBoxCaption  db "LED BLinker Ver.1",0 
    Msg1           db " ------ Wellcome To LED Blinker ------ ",0 
    Msg2           db "This programm Created By Mahdei Farhani & Hamir Reza firoozy !!!",0
    Msg3           db "This Aplaction Created By Masm32 Ver 8.2 ....",0
    
    ClassName db "LEDBlinker",0
    AppName db "LED Blinker",0
    
    TimerID        dd 0 
    ;Libname db "Inpout32.dll",0
    Libname db "KERNEL32.DLL",0 			; see my note:
    						;###---Note1:---###
    						; I changed it b'c i didn't have Inpout32.dll to Kernell32.dll
    						; so i can call Beep Function
    						; beep (dwFreq , dwDuration ) 
    						; ok.now u can change it to what ever u want.
    						;###---Note2:---###
    						; in assembly thease word not same "Kernel32.dll" and "KERNEL32.DLL"
    						;###-----------###
    
    FunctionName db "Beep",0 			; see my note 
    ;FunctionName db "Out32",0
    DllNotFound db "Can not Load Library Kernel32.dll",0
    FunctionNotFound db "Error In Opening Function OUT",0
    FunctionRetError db "Error In Calling Function",0
    
    .DATA?                				; Uninitialized data 
    hInstance HINSTANCE ?        			; Instance handle of our program 
    CommandLine LPSTR ? 
    hLib dd ?
    OutAddr dd ?
    
    
    
    .code 
    
    start: 
    
    ;////////////////////////////////////////////////////////////////////////;
    
    ;                  Show The Message Box In Load programm                 ;
    ;////////////////////////////////////////////////////////////////////////;
    
    ;    invoke MessageBox, NULL, addr Msg1, addr MsgBoxCaption, MB_OK
     ;   invoke MessageBox, NULL, addr Msg2, addr MsgBoxCaption, MB_OK + MB_ICONINFORMATION
        
    ;invoke MessageBox, NULL, addr Msg3, addr MsgBoxCaption, MB_OK + MB_ICONINFORMATION
        invoke LoadLibrary,addr Libname
        .if eax==NULL
            invoke MessageBox,NULL,addr FunctionNotFound,addr AppName,MB_OK + MB_ICONSTOP
        .else
    
            mov hLib,eax
            invoke GetProcAddress,hLib,addr FunctionName
            .if eax==NULL
                invoke MessageBox,NULL,addr FunctionNotFound,addr AppName,MB_OK + MB_ICONSTOP
    	    jmp endit 				; if null go to endit
            .endif
            mov OutAddr,eax		    
    	push 64					; this is dwDuration paramter.U push first last par and last-1 to firat one 
    						; in reverse order . may be u don't pay atention to this note
    	push 457				; this is dwFreq parameter in reverse order
            call OutAddr				; now ready to call someting
    	.if eax==NULL
    	    invoke MessageBox,NULL,addr FunctionRetError,addr AppName,MB_OK + MB_ICONSTOP
    	.endif
        .endif
        invoke FreeLibrary,hLib
    endit:
        invoke ExitProcess,0 
    end start 
    
     
  6. HACKER_BEREFIN

    HACKER_BEREFIN کاربر تازه وارد

    تاریخ عضویت:
    ‏10 می 2004
    نوشته ها:
    13
    تشکر شده:
    0
    سلام مشکلشو خودم پیدا کردم جای push را جابجا نوشته بودم ....
    سورس برنامه تحت داس هم می فرستم ...
    ولی باید به asm تغییرش بدی
     

    فایل های ضمیمه:

    • TST.txt
      اندازه فایل:
      240 بایت
      نمایش ها:
      1
  7. HACKER_BEREFIN

    HACKER_BEREFIN کاربر تازه وارد

    تاریخ عضویت:
    ‏10 می 2004
    نوشته ها:
    13
    تشکر شده:
    0
    سلام مشکلشو خودم پیدا کردم جای push را جابجا نوشته بودم ....
    سورس برنامه تحت داس هم می فرستم ...
    برنامه رو به فایل asm تبدیل کن ...
     
  8. saeedsmk

    saeedsmk مدیر بازنشسته

    تاریخ عضویت:
    ‏6 سپتامبر 2003
    نوشته ها:
    1,519
    تشکر شده:
    4
    مباركه :lol: :lol:
    گفتم كه ورودي ها بصورت معكوس وارد ميشن نه مستقيم
    حالا ايا سورس تحت داست درست نشده يا هنوزم مشكل داره ؟
    :)
     
  9. HACKER_BEREFIN

    HACKER_BEREFIN کاربر تازه وارد

    تاریخ عضویت:
    ‏10 می 2004
    نوشته ها:
    13
    تشکر شده:
    0
    نه هنوز درست نشده .... اگه میشه کمک کنید
     
  10. saeedsmk

    saeedsmk مدیر بازنشسته

    تاریخ عضویت:
    ‏6 سپتامبر 2003
    نوشته ها:
    1,519
    تشکر شده:
    4
    شرمنده من دستگاهم تريكيده بود نتونستم آن بشم چشم يه نگاه ميكنم
    راستي اين dll رو ميتوني آپ كني برام
    مرسي
     
  11. HACKER_BEREFIN

    HACKER_BEREFIN کاربر تازه وارد

    تاریخ عضویت:
    ‏10 می 2004
    نوشته ها:
    13
    تشکر شده:
    0
    آقا سعید اینو حتما تغییر نام بده چون تغییرش دادم به DOC شما به dll تبدیلش کن .
     

    فایل های ضمیمه:

    • inpout32.doc
      اندازه فایل:
      32 KB
      نمایش ها:
      1
zarpopخرید بک لینک عسل طبیعی و گرده گل ایرانیfootbal