IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

DOEVENTS en Assembleur


Sujet :

Assembleur

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut DOEVENTS en Assembleur
    Comment faire un event en asm ? l'équivalent d'un DOEVENTS en langage évolué .
    Papi
    papi

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Août 2003
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 247
    Points : 276
    Points
    276
    Par défaut
    On ne fait pas d'ASM quand on veut faire de la programmation évennementielle.


    Les abstractions des languages évolués n'ont pas d'équivalents en ASM.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2002
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 24
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Blawk
    Les abstractions des languages évolués n'ont pas d'équivalents en ASM.
    je ne serais pas si catégorique. par contre c'est vrai que leurs mises en oeuvre peuvent être parfois complexe.

    je connais pas bien ce que fait doevents, mais je pense qu'il faudrait que tu regardes du côté des threads.

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Avril 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut event webcam
    ; un exemple pour ma question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    .586
    .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
    includelib \masm32\lib\gdi32.lib
    .const
    TRUE equ 1
    FALSE equ 0
     
    .data
    len db ? 
    wid dd ?
    heig dd ?
    mult dd 1
    handle dd ?
    Message db "hdc:          ",13,10,"dc2:            ",0
    bte db "papi",0
    btt db "ok",0
    r db 90000 dup (0);memoire du rouge
    v db 90000 dup (0)      ;"v
    b db 90000 dup (0)      ;"b  
     
    .code
    DllEntry proc hInstDLL:HINSTANCE, reason:DWORD, reserved1:DWORD
            mov  eax,TRUE
            ret
    DllEntry Endp
     
    Moyimage PROC  my1:dword,my2:dword,Nim:word
    ;;;;j'ai qu'une quinzaine de jours en asm ; soyez tolerant
    ;my1 -> hdc de limage webcam
    ;my2 -> hdc de limage traitée
    pushf
    ;pushad
    mov len,16;nombre d'image
    mov heig,150;hauteur image
    mov wid,150;largeur image
    mov ebx,90000;longueur memoire pour les 3 couleurs
    ;lit l'image de la webcam
    lens:
    hig:
    widt:
    invoke GetPixel,my1,wid,heig
    push eax
    push eax
    and eax,000000ffh
    add dword ptr [r+ebx],eax;add du rouge
    pop eax
    and eax,0000ff00h
    shr eax,8
    add dword ptr [v+ebx],eax;add v
    pop eax
    and eax,00ff0000h
    shr eax,16
    add dword ptr [b+ebx],eax;add b
    dec ebx;dwor +4
    dec ebx
    dec ebx
    dec ebx
    dec wid
    jnz widt
    mov wid,150
    dec heig
    jnz hig
    mov heig,150
    ;;;;;;;;attend la fin de balayage
     
     mov   dx,03dah
    vbl_fin:
       in    al,dx
       test  al,08h
      jnz   vbl_fin
    vbl_recom:
       in    al,dx
        test  al,08h
        jz    vbl_recom
     
    ;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;ICI !comment faire un event ?;;;;;;;;;;;;;;;;
    mov ebx,90000
    dec len
    jnz lens
    ;fin des 16 images
    xor eax,eax
    mov heig,150
    mov wid,150
    mov ebx,90000
    ;écrit limage traitée
    heig2:
    wid2:
     
    shr dword ptr [r+ebx],4;div par 16(image)
    shr dword ptr [v+ebx],4
    shr dword ptr [b+ebx],4
    ;coul du pixel dans eax
    mov eax,dword ptr [r+ebx]
    shl dword ptr [v+ebx],8
    add eax,dword ptr [v+ebx]
    shl dword ptr [b+ebx],16
    add eax,dword ptr [b+ebx]
     
    invoke SetPixel,my2,wid,heig,eax
    mov dword ptr [r+ebx],0h;mise a 0 en hex de la memoire
    mov dword ptr [v+ebx],0h;ne fonctionne pas en dec ?
    mov dword ptr [b+ebx],0h
    dec ebx
    dec ebx
    dec ebx
    dec ebx
    dec wid
    jnz wid2
    mov wid,150
    dec heig
    jnz heig2
     
    ;popad
    popf
     
     
    ret 
     
    Moyimage ENDP
     
    End DllEntry
    papi NULL
    papi

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Avril 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut pour BLAWK
    En langage evolué ,le DOEVENTS rend la main au multi taches locale si une demande est faite(de ton application .le multi taches de windows continu a tourner ?)
    et reprend la main en executant l'instruction suivante apres doevents.[et ! qui fait le retour RET puisque l'event est anonyme]
    Note: la dll presente met 2.5 s ;sans les deux API 0.05 s ;donc bonjour les API . malgre cela ou est passe la vitesse de l'ASM ? ...le multi taches ?
    papi NULL
    papi

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 91
    Points : 96
    Points
    96
    Par défaut
    Tu devrais regarder les fonctions SuspendThread et ResumeThread.
    (Si j'ai correctement compris ton problème)
    @+

Discussions similaires

  1. Tutoriels, F.A.Q : la rubrique Assembleur de Developpez.com
    Par Alcatîz dans le forum Assembleur
    Réponses: 3
    Dernier message: 07/06/2007, 19h14
  2. ecrire son OS (assembleur ??)
    Par Anonymous dans le forum Programmation d'OS
    Réponses: 9
    Dernier message: 25/11/2002, 19h25
  3. Assembleur sous Windows et sous Linux
    Par Bibouda dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 28/10/2002, 07h55
  4. Random en Assembleur
    Par funx dans le forum Assembleur
    Réponses: 9
    Dernier message: 02/09/2002, 17h05
  5. Quel désassembleur/assembleur pour un exe Windows ?
    Par Anonymous dans le forum x86 32-bits / 64-bits
    Réponses: 6
    Dernier message: 17/04/2002, 10h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo