Accueil > Forum > > > > 5 Erreurs à trouver
5 Erreurs à trouver
vendredi 10 novembre 2006 à 14:41:42 |
5 Erreurs à trouver

bizzard4
|
Bonjour ! J'explique le contexte. Un de mes professeurs ma donné comme défi de trouver les 5 erreurs dans le code ASM suivant. Je sais qu'il l'a trouvé sur internet (un site de défi je crois). J'ai essayé d'apprendre le ASM sur le tât comme on dit mais sans résultat. Alors, pour vu que mon prof ma dit d'utiliser tout les moyens :P Je me vire vers la fabuleuse communauté ASM de Code-Source pour m'aider. Vous n'etes pas oubliger de me donner les 5 erreurs toutes cuit dans le bec mais des indices. J'ai découvert 2 anomalies dans le code que j'ai précisé plus bas. Voici l'énoncé du email (ou du site web) : Jean-Claude, expert en programmation rentre un peu beurré d'une soirée.
Devant se lever tôt le matin, et n'ayant aucun réveil il décide de
faire un réveil en ASSEMBLEUR.
Il ouvre MASM32 v8.2, et commence à taper. Seulement, toujours éméché, il oublie certaines variables et instructions.
Il va donc sur IRC et demande à un copain de l'aider à trouver les erreurs dans son code, ne se sentant pas apte à debogger.
Il précise à son ami, que le réveil possède un champ (IDC_TIME) et un bouton (BTN_TIME).
Vous êtes l'ami et Jean-Claude vous a donné une partie (et donc pas l'entieretée du programme) du programme boggé.
>Votre but, trouver au maximum 5 erreurs. (aucune suppression, seulement des modifications et des ajouts)
>TOUT et je répète TOUT doit être utilisé.
Et finalement le code :
.586p
.mmx
.model flat, stdcall
option casemap :none
Include \masm32\include\windows.inc
Include \masm32\include\user32.inc
Include \masm32\include\kernel32.inc
Includelib \masm32\lib\user32.lib
Includelib \masm32\lib\kernel32.lib
.const
BTN_TIME equ 1001
IDC_TIME equ 1002
.data
format db "%x" ,0
time byte 20 dup (0)
buffertimeconv byte 20 dup (0)
.code
DialogProc Proc hwnd:dword,message:dword,wParam:dword,lParam:dword
debut:
pushad
mov eax,hwnd
.IF message==WM_COMMAND
mov eax,wParam
.IF ax==BTN_TIME
call deb
INVOKE SetDlgItemTextA,hwnd,IDC_TIME, addr time
.ENDIF
.ELSE
popad
xor eax,eax
ret
.ENDIF
popad
xor eax,eax
ret
DialogProc endp
deb:
pushad
invoke GetSystemTime, addr time
jmp first
conv:
pushad
INVOKE wsprintf, addr buffertimeconv, addr format, buffertimeconv
popad
second:
mov byte ptr ds:[ecx], al
call qqch <-- Appel d'une fonction (mais laquel ?)
mov ax, word ptr ds:[buffertimeconv]
.IF ah==0
mov al, 30h
.ENDIF
mov word ptr ds:[buffertimeconv], 0
mov word ptr ds:[edx], ax
.IF ebx==6
mov byte ptr ds:[edx+ebx+2], 0
.ELSE
mov byte ptr ds:[edx+ebx+2], 58
.ENDIF
ret
first:
xor eax,eax
sub esi, esi
mov ebx, esi
mov ecx, offset buffertimeconv
mov edx, offset time
mov al, byte ptr ds:[edx+8]
call second
add ebx, 3
mov al, byte ptr ds:[edx+10]
call second
add ebx, 3
mov al, byte ptr ds:[edx+12]
call second
popad
ret <-- Manque l'instruction de fin de fichier !
~~ Cordialement Francois Gingras
|
|
vendredi 10 novembre 2006 à 20:04:21 |
Re : 5 Erreurs à trouver

ToutEnMasm
|
vite fait comme ça time SYSTEMTIME <> ;byte 20 dup (0) debut: mal placé doit servir a la fin "end debut" placer après dialog manque la ressource , ce qui rend l'exercice pas du tout amusant prendre des bytes dans la structure time parait des plus suspect mov al, byte ptr time.wHour ;[edx+8] word
|
|
mercredi 15 novembre 2006 à 20:49:11 |
Re : 5 Erreurs à trouver

_dune2_
|
Salut !
j'ai trouvé les 5 erreurs !!
->
Include \masm32\include\windows.inc Include \masm32\include\user32.inc Include \masm32\include\kernel32.inc Includelib \masm32\lib\user32.lib Includelib \masm32\lib\kernel32.lib
.. bon ... ok ... je -->[]
Gentoo... que du bonheur ...
|
|
mercredi 15 novembre 2006 à 21:23:30 |
Re : 5 Erreurs à trouver

bizzard4
|
?????????? explique un peu plus si cé vraiment la -_-
~~ Cordialement Francois Gingras
|
|
mercredi 15 novembre 2006 à 22:34:54 |
Re : 5 Erreurs à trouver

_dune2_
|
Ben quand je compile avec nasm ou avec as sous linux, j'ai tout de suite ces 5 lignes en erreur ! ;) Sans rancune ;)
Gentoo... que du bonheur ...
|
|
mercredi 29 août 2007 à 10:59:16 |
Re : 5 Erreurs à trouver

PerfectSlayer
|
Salut à toi bizzard4 Premièrement, je ne te répondrai pas. Deuxièmement, l'équipe d'administration de Newbie Contest te remercie pour la publicité que tu fais de leurs épreuves. Le code ci-dessus fait parti d'une épreuve de programmation. Merci de ne pas l'aider et de laisser tout le monde chercher.  Merci à tous. Bonne continuation à vous autres.
|
|
Cette discussion est classée dans : mov, time, ds, byte, ptr
Répondre à ce message
Sujets en rapport avec ce message
optimisation [ par sajid_morad ]
salut tout le monde , j ai une parti du code en c++, que j ai voulu optimiser , le l ai reécri en asm , mai ça donne pas grand chose, si quelqu un po
une librairie [ par rhumsek ]
slt mon prog contient une erreur d'après ma compilationje ne la voie pas pouvez vous m'aidé??TITLE Test de la librairieINCLUDE Irvine32.libCR=0DhLF=0A
Probleme de compilation [ par noel70 ]
Bonjour a tous.voila, sur une fenetre, j'ai mis un bouton, et quand j clique sur ce bouton, j'aimerais faire apparaitre une autre fenetre.Alors ce que
Routine inversée... [ par viva ]
salut,peutons inversé cette routine. je débute en asm je sais lire ces instructions mais j'ai des limites. MOV ESI, valeur MOV BL,BYTE PTR DS:[ESI
ecrire dans un fichier avec assembleur [ par karimusthb ]
Bonjour, j'essaye d'ecrire dans un fichier avec assembleur,[MASM] le probleme c que en resultat j'ai un fichier ecrit en caractére ASCII comment faire
en quel langage est ecrit ce programme [ par jedilu ]
bonjouren quel language est ecrit ce programme car j'ai un probleme pour le lancermerci00629DE5 AE SCAS BYTE PTR ES:[EDI]00629DE6 9E
Problemme avec mes character... XD [ par belette321 ]
J'esseil d'ajouter une commande administrateur a dans un des mes jeux en-ligne, /admin_popup (Fait apparaitre un MSG dans une boite dans le lobby). Un
Peut on mieux faire ? [ par spiky31 ]
Bonjour Voila j'ai commencé ce matin a programmer en assembleur intel et j'aurais voulu avoir votre avis (Je me considére pas vraiment comme un noob
Logique d'utilisation du registre DS (mode réel) [ par powel42 ]
Bonjour à tous, je suis curieux de savoir quelle est la "bonne" manière d'utiliser le segment DS (s'il y en a une). Lorsque l'on démarre sous DOS
[ASM] Que la vie était simple sous MS-DOS 16 bits (scan mémoire physique) [ par dogloop ]
J'ouvre ce topic pour essayer de mieux comprendre quelles sont les différentes façons pour accéder à toute la RAM (et aussi peut être la ROM) de mon P
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|