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
QUELQUES TRUCS INTéRESSANTS (05/09/2010)QUELQUES TRUCS INTéRESSANTS (05/09/2010) par coq
Cette fois-ci : .NET Debug / Performance Sécurité SQL Server .NET Determining if a type is defined in the .NET Framework (blog de Scott Dorman) Ha tiens, je n'avais jamais vraiment pensé à utiliser le jeton de clé publique...
Cliquez pour lire la suite de l'article par coq ENUMERABLECOLLECTIONENUMERABLECOLLECTION par Matthieu MEZIL
Prenons le scénario suivant. On utilise MVVM. On a les deux classes suivantes dans le model : public class Child { } public class Parent { private ObservableCollection < Child > _children; public ObservableCollection < Child > Children { get {...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [HS] CHROME 6 + MOI = COUP DE GUEULE ![HS] CHROME 6 + MOI = COUP DE GUEULE ! par JeremyJeanson
Attention, le poste qui suit n'est pas la complainte d'une personne : Qui n'aime pas Chrome. D'un anti Google. D'un développeur qui a un poil énorme dans la main. Ceux qui me fréquentent savent que je change de navigateur favori tous les 2 ou 3 mois afin ...
Cliquez pour lire la suite de l'article par JeremyJeanson [WP7] UTILISER UN WRAPPANEL DANS UNE APPLICATION WINDOWS PHONE 7[WP7] UTILISER UN WRAPPANEL DANS UNE APPLICATION WINDOWS PHONE 7 par Audrey
Lors de la réalisation de ma 2ème application Windows Phone 7, j'ai souhaité utiliser un WrapPanel pour afficher plusieurs photos. Mais le contrôle WrapPanel ne fait pas parti de la liste des contrôles inclus dans le SDK de la version Beta des outils pour...
Cliquez pour lire la suite de l'article par Audrey [WP7] BESOIN D'AVOIR DES DONNéES EN CACHE[WP7] BESOIN D'AVOIR DES DONNéES EN CACHE par Nicolas
Les développeurs ASP.NET ont l'habitude de mettre des données en cache pour éviter de requêter a chaque fois la base de données. Et il est toujours utilie de penser que vos utilisateurs mobiles n'ont pas troujours une super connexion 3G/WIFI et un for...
Cliquez pour lire la suite de l'article par Nicolas
Forum
RE : STEP 5RE : STEP 5 par castou60
Cliquez pour lire la suite par castou60
Logiciels
WebLogAndPass (1.0.0)WEBLOGANDPASS (1.0.0)WebLogAndPass est un logiciel permettant de mémoriser vos sites préférés et pour chacun d'entre-e... Cliquez pour télécharger WebLogAndPass uTorrent (2.0.4)UTORRENT (2.0.4)C'est un client BitTorrent très puissant et très performant. Comme son nom l'indique, uTorrent (m... Cliquez pour télécharger uTorrent Bureau de Gestion - ERP Devis Facturation (2.02)BUREAU DE GESTION - ERP DEVIS FACTURATION (2.02)- Version gratuite du 10/06/2010
Le Bureau de Gestion est un logiciel dédié à la gestion de l'en... Cliquez pour télécharger Bureau de Gestion - ERP Devis Facturation 4Videosoft Transfert iPod Mac (3.2.08)4VIDEOSOFT TRANSFERT IPOD MAC (3.2.08)4Videosoft Transfert iPod-Mac caractérise principalement à transférer les fichiers iPod vers Mac.... Cliquez pour télécharger 4Videosoft Transfert iPod Mac 4Videosoft HD Convertisseur (3.3.08)4VIDEOSOFT HD CONVERTISSEUR (3.3.08)Etant le meilleur HD Vidéo Convertisseur, 4Videosoft HD Convertisseur, vous pouvez regarder la vi... Cliquez pour télécharger 4Videosoft HD Convertisseur
|