Accueil > Forum > > > > ASM old-style / ASM ancienne méthode
ASM old-style / ASM ancienne méthode
samedi 25 octobre 2003 à 01:49:13 |
ASM old-style / ASM ancienne méthode

TehWan
|
Salut, j'aimerais bien coder en assembly de l'ancienne façon, c'est-à-dire sans aucune procédures, simplement des "labels". (excusez mes anglicismes, je suis Québécois) Voici un exemple que j'ai trouvé sur ce site... (il fait planter Windows 2000) call fac_vga call fin
fac_vga: mov ax,111 int 10h ret
fin: mov ax,0x4c int 0x21
|
C'est un exemple d'un code sans procédures, seulement des "labels". Si vous pouvez me donner des références de codes comme celui-ci, mais pour Win32 (pas DOS), ce serait bien apprécié. (je me sens téteux à parler comme ça!  Je vais essayer de chercher partout des exemples de code et si je trouve comment faire, je l'écrit ici, c'est assuré!  -- Wolf --
|
|
samedi 25 octobre 2003 à 11:15:43 |
Re : ASM old-style / ASM ancienne méthode

TangiX
|
Le probleme c que le but de ce prog n'est pa de planter windows (ou si i plante c que la fct 6ah n'existe pa dan l'int 10h (en mode dos emulé bien sur)) il y a deux appel d'int dans ce prog donc il ne peut pa tourner sou win faire un prog sans les api sou win c du suicide mais : Liberté toujours !  TangiX 
|
|
samedi 25 octobre 2003 à 11:20:19 |
Re : ASM old-style / ASM ancienne méthode

BruNews
|
pour Win32 il y aura par force des procedures car le systeme a besoin d'adresses de fonctions pour communiquer. L'exemple que tu as mis est un prog a deroulement lineaire, un prog win32 fonctionne sur le principe des messages. BruNews, ciao...
|
|
samedi 25 octobre 2003 à 19:15:48 |
Re : ASM old-style / ASM ancienne méthode

TehWan
|
Tous les deux vous n'avez rien compris. Je sais ce que le programme fait et pourquopi il plante windows 2000, ce n'est pas ça que je veux savoir. Et puis, si vous déassemblez un programme, vous remarquerez qu'il n'y a aucune procédure, que des "labels". Si il y a un ret, c'est une procédure. ret renvois à l'addresse qui a appelé la procédure. Win32 fonctionne avec des messages, mais seulement si une fenêtre est crée. Les messages sont envoyés à la fenêtre. D'ou le nom WndProc (Window Processing). Je n'ai pas besoin de fenêtre, j'écris sur le DC du bureau. Les addresses de fonctions sont en fait des addresses de labels. call quelquechose va aller à l'addresse de quelquechose. Le ret à la fin de la "procédure" va retourner à l'addresse qui l'a appellée. Bon, j'ai lu beaucoup sur la syntaxe assembly 80x86 et tout ce qu'il me reste à comprendre c'est, comment avoir les arguments pour une procédure. Voici un exemple de code que j'ai fait qui fonctionne presque... (Ancienne syntaxe compilée avec MASM) .386 .model flat, stdcall option casemap:none
include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\gdi32.inc
includelib \masm32\lib\user32.lib includelib \masm32\lib\gdi32.lib
.data? msg MSG <?> wc WNDCLASS <?>
.data hWnd dd 0 hInstance dd 0
hInst dd 0 hPrevInst dd 0 CmdLine dd 0 CmdShow dd 0
hWin dd 0 uMsg dd 0 lParam dd 0 wParam dd 0
szDisplayName db "Wolf Rules", 0 szClassName db "Wolf", 0
.const
.code start:
WinMain: pop hInst pop hPrevInst pop CmdLine pop CmdShow
push hInst pop hInstance
mov wc.style, CS_HREDRAW or CS_VREDRAW mov wc.lpfnWndProc, offset WndProc mov wc.cbClsExtra, 0 mov wc.cbWndExtra, 0 mov wc.lpszMenuName, 0 mov wc.lpszClassName, offset szClassName push hInstance pop wc.hInstance
push 255 call CreateSolidBrush mov wc.hbrBackground, eax
push IDI_APPLICATION push hInstance call LoadIcon mov wc.hIcon, eax
push IDC_ARROW push 0 call LoadCursor mov wc.hCursor, eax
lea eax, wc push eax call RegisterClass
push 0 push hInstance push 0 push 0 push 600 push 800 push 2147483648 push 2147483648 push WS_OVERLAPPED push offset szDisplayName push offset szClassName push WS_EX_WINDOWEDGE call CreateWindowEx mov hWnd, eax
push SW_SHOW push hWnd call ShowWindow
push hWnd call UpdateWindow
StartLoop: lea eax, msg push 0 push 0 push 0 push eax call GetMessage
cmp eax, 0 je ExitLoop
lea eax, msg push eax call TranslateMessage
lea eax, msg push eax call DispatchMessage
jmp StartLoop
ExitLoop: mov eax, msg.wParam ret
WndProc: pop hWnd pop uMsg pop wParam pop lParam
cmp uMsg, WM_CREATE je _CREATE
cmp uMsg, WM_DESTROY je _DESTROY
cmp uMsg, WM_COMMAND je _COMMAND
jmp _END
_CREATE: push hWin pop hWnd jmp _END
_DESTROY: push 0 call PostQuitMessage jmp _END
_COMMAND: mov eax, wParam jmp _END
_END: push lParam push wParam push uMsg push hWin call DefWindowProc ret
end start
|
L'erreur que le code génère est lorsque je "pop" dans WndProc. C'est tout ce qu'il me manque pour l'instant. Pour les sceptiques, enlevez un paramètre au WndProc (pop) et l'erreur change de place. -- Wolf --
|
|
samedi 25 octobre 2003 à 19:34:29 |
Re : ASM old-style / ASM ancienne méthode

BruNews
|
Voila le proto en C: int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hprev, PSTR cmdline, int nshow) en ASM WinMain n'existe pas a moins de creer ce bloc expres, ce qui m'a toujours semble inutile. Tu n'a donc rien a POPer. Qui plus est on ne fait jamais un POP sur les params, on les lit en offset de ESP Exemple lecture de hinst: mov eax, [esp+4] Dans une procedure, la stack se presente ainsi: [esp] contient IP, ne pas modifier sans raison valable. [esp+4] est 1er param [esp+8] est 2eme param (hprev) etc... Prenons le cas d'une proc a 4 params, doit sortir par: ret 16
BruNews, ciao...
|
|
samedi 25 octobre 2003 à 21:00:37 |
Re : ASM old-style / ASM ancienne méthode

TehWan
|
Je suis programmeur C++ mais je me convertis au ASM. WinMain ne me cause aucun problème, c'est WndProc. En passant, merci beaucoup. C'est ce que je cherchais! En Win32, chaque item dans le stack a 4 bits. En Win16/DOS, seulement 2 bits. Merci énormément. Je l'ai cherché longtemps. Maintenant je peut coder de l'ancienne façon!  -- Wolf --
|
|
Cette discussion est classée dans : code, style, ancienne, asm, old
Répondre à ce message
Sujets en rapport avec ce message
algo pour jeu de shoot en asm [ par cable ]
Bonjourje suis un jeune débutant en programmation en assembleur et je cherche l'algo (voir le code source) d'un jeu de shoot 'em up en scroling horizo
Variables sour ASM pour 8086 [ par koopje ]
Bonjour à tous,Etudiant, je suis en train de m'exercer avec Emu8086, un émulateur (et assembleur, au passage) d'assembleur sour 8086. J'ai tenté de f
débutant en asm [ par eax ]
salutje débute en asm (avec nasm) et j'arrive pas à assembler mon premier code lolsection .datamsg db 'Hello world$'section .codedebut: lea dx,msg mov
appeller du C en asm [ par S2R ]
Bonjour, je voudrait savoir comment utiliser un code écrit en C dans un code assembleur.
nasm - mémoire read-only [ par Funto66 ]
Bonjour,je suis en train d'écrire des tutoriaux pour le site Coder-Studio (http://www.coder-studio.com/?page=tutoriaux) mais pour la création du tutor
portabilité du code [ par sajid_morad ]
salut tout le monde, je programme avec le visaul c++ , et j ai inserer un code asm dans mon programme, sashant que j ai un micro pricesseur pentium, v
(Debutant en ASM) (MASM) pointeur sur une structure [ par Otaku ]
Salut, voila mon pb, j'aimerai créer une fonction en asm qui reçoit un pointeur sur un élément de type structure, jusque-là pas de pbmais comment modi
Code HUFFMAN en asm 68000 [ par arnaud gasnier ]
salut,je voulais savoir si qqun pouvait m'aider pour trouver comment coder en ASM 68000 l'algo de huffman pour compresser un petit texte. le tout débu
W32Dasm et code ASM [ par bundyboss ]
Salut a vous tous!!Presque tout est dans le titre..En fait j'aimerai savoir si le code ASM que ressort W32Dasm ou autre programme du genre et directem
traduire du asm en vb [ par matlow ]
Mon boss m'a demandé de récupérer le code source vb d'un éxécutable. Pour le moment, j'arrive à récupérer uniquement le code assembleur, donc j'aim
Livres en rapport
|
Derniers Blogs
[TECHDAYS2012] OUI J'Y SERAI![TECHDAYS2012] OUI J'Y SERAI! par JeremyJeanson
Bonsoir, Certes, je l'annonce avec un peu de retard, mais je serai effectivement au Techdays demain. Comme l'an dernier, je participerai au programme ATE (Ask The Expert). Si vous avez des questions Workflow, WCF, AppFabric ou plus généralement .net, n'hé...
Cliquez pour lire la suite de l'article par JeremyJeanson TFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICESTFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICES par vfabing
Afin de s'assurer du bon fonctionnement des différentes synchronisations effectuées par les TFS Integration Tools, 2 rapports sont présents dès l'installation. Il suffit alors d'effectuer les manipulations suivantes pour pouvoir les visualiser : Loca...
Cliquez pour lire la suite de l'article par vfabing CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|