begin process at 2012 05 25 11:19:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Newbii

 > 

Une mémoire "read"


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Une mémoire "read"

vendredi 4 novembre 2005 à 18:18:37 | Une mémoire "read"

msteve

Bonsoir,
Je suis débutant et j'ai recopié un programme test.
Je parviens à l'assembler, puis à créer un .exe ;
quend je lance l'exe j'obtiens la boîte de dialogue suivante :

Erreur d'application
L'instruction à "0x82adb00" emploie l'adresse mémoire "0x82a2db00". La mémoire ne peut pas être "read".

----------------------------------------------------------
Le programme qui bug :

.386
.model flat,stdcall
option casemap:none

WinMain proto :DWORD,:DWORD,:DWORD,:DWORD

include \masm32\include\windows.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib

.DATA
ClassName db "SimpleWinClass",0
AppName db "Notre première fenêtre",0
OurText db "L'assembleur Win32 est vraiment génial !",0

.DATA
hInstance HINSTANCE ?
CommandLine LPSTR ?

.CODE
start:
    invoke GetModuleHandle,NULL
    mov hInstance,eax
    invoke GetCommandLine
    mov CommandLine,eax
    invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
    invoke ExitProcess,eax
   
WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdShow:DWORD
    LOCAL wc:WNDCLASSEX
    LOCAL msg:MSG
    LOCAL hwnd:HWND
    mov wc.cbSize,SIZEOF WNDCLASSEX
    mov wc.style,CS_HREDRAW or CS_VREDRAW
    mov wc.cbClsExtra,NULL
    mov wc.cbWndExtra,NULL
    push hInst
    pop wc.hInstance
    mov wc.hbrBackground,COLOR_WINDOW+1
    mov wc.lpszMenuName,NULL
    mov wc.lpszClassName,OFFSET ClassName
    invoke LoadIcon,NULL,IDI_EXCLAMATION
    mov wc.hIcon,eax
    mov wc.hIconSm,eax
    invoke LoadCursor,NULL,IDC_HAND
    mov wc.hCursor,eax
    invoke RegisterClassEx,addr wc
    invoke CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
        CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInst,NULL
    mov hwnd,eax
    invoke ShowWindow,hwnd,SW_SHOWNORMAL
    invoke UpdateWindow,hwnd
        .WHILE TRUE
            invoke GetMessage,ADDR msg,NULL,0,0
            .BREAK .IF(!eax)
                invoke TranslateMessage,ADDR msg
                invoke DispatchMessage,ADDR msg
        .ENDW
        mov eax,msg.wParam
    ret
WinMain endp

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM,lParam:LPARAM
    LOCAL hdc:HDC
    LOCAL ps:PAINTSTRUCT
    LOCAL rect:RECT
    .IF uMsg == WM_DESTROY
        invoke PostQuitMessage,NULL
    .ELSEIF uMsg == WM_PAINT
        invoke BeginPaint,hWnd,ADDR ps
        mov hdc,eax
        invoke GetClientRect,hWnd,ADDR rect
        invoke DrawText,hdc,ADDR OurText,-1,ADDR rect,DT_SINGLELINE or DT_CENTER or DT_VCENTER
        invoke EndPaint,hWnd,ADDR ps
    .ELSE
        invoke DefWindowProc,hWnd,uMsg,wParam,lParam
        ret
    .ENDIF
    xor eax, eax
    ret

WndProc endp
end start
-----------------------------------------------

Merci de me donner vos lumières.
vendredi 4 novembre 2005 à 19:44:55 | Re : Une mémoire "read"

msteve

Ben !!!! J'ai trouvé !
Pour info :
ligne 14 : après le second DATA, il faut mettre un point d'interrogation (constantes non déterminées ...)
j'ai oublié la ligne : mov wc.lpfnWndProc, OFFSET WndProc
à inséreer dans WinMain après mov wc.style

Bonne soirée.

samedi 5 novembre 2005 à 00:17:18 | Re : Une mémoire "read"

BruNews

Administrateur CodeS-SourceS
Je répète:
WinMain n'a rien à faire dans un prog ASM, tu empiles 4 pseudo params inutilement.

ciao...
[ Lien ]
BruNews, MVP VC++


Cette discussion est classée dans : mov, hwnd, wc, invoke, eax


Répondre à ce message

Sujets en rapport avec ce message

Ancien code - CreateWindowEx ne fonctionne pas [ par TehWan ] Je ne comprends vraiment pas pourquoi CreateWindowEx ne fonctionne pas. Je code en ancien code avec MASM32. J'ai même essayé la nouvelle syntaxe (invo Aidez moi à traduire une petite fonction assembleur en C (API Windows) [ par skirby ] Bonjour à tous, J'essaye désespérément de traduire une fonction ASM en C. Le but de cette fonction est de pouvoir utiliser une ressource compilé dans afficher une image jpeg avec la fonction StretchDIBits ? [ par mitch19 ] bonjour, j'essaye depuis quelques temps d'afficher une image jpeg avecla commande  StretchDIBits, en vain ! mon programme plante lamentablement !Si qu Recherche de fichier recursif [ par maximus4 ] Bonjour, j'ai la procédure suivante pour la recherche récursive, le résultat est stocké dans un fichier texte. [code=autre]invoke CreateFile,offset fi out bmp [ par vincent2795 ] Bonjour, dans ma source, j' essaye de faire un screenshot, et de le nommer pas la date et l' heure ou il es pris. mon problème: si le nom du fichier e comment utiliser une chaine de caractères stockée dans un fichier ressource ? [ par parki ] Bonjour,je n'arrive pas à utiliser une chaine de caractère stockée dans un fichier ressources. (je sais qu'on peut s'en passer mais j'aime bien compre nombre premier en nasm [ par YAWLY ] MED.MERZOUG salut tout le monde vous pouvez m'aider si j le compile sa affiche chaque fois le nbr est non premeir > le code est : Section .date ch Comment utiliser une variable ?! lorsque l'on utilise déjà ESI et EDI dans la PROC. [ par rebixav ] Voilà mon problème, je débute en assembleur et je l'utilise essentiellement pour créer des procédure pour visual basic ou C voici une de mes procédure multiplication plus RAPIDE avec SHL, mais BUG ?!!! [ par rebixav ] voilà j'ai remarquer il y a peut de temps l'utilité des fonction de décalage de bits - SHL(left) et - SHR(right) et que l'on peut muliplier eax par Resultat de la vitesse des : Registre, instruction, calcul, et mémoire ! ! ! [ par rebixav ] Voici la liste que j'ai créé : asm : ( inc ) = 0.065 asm : ( and ) = 0.08 asm : ( or ) = 0.08 asm : ( xor ) = 0.08 asm : ( not )


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,990 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales