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
TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : PIC 16F84RE : PIC 16F84 par pont
Cliquez pour lire la suite par pont RE : PIC 16F84RE : PIC 16F84 par belounis
Cliquez pour lire la suite par belounis RE : PIC 16F84RE : PIC 16F84 par pont
Cliquez pour lire la suite par pont
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|