begin process at 2012 05 25 03:54:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Assembleur

 > 

Divers

 > 

Débutant(e)

 > 

5 Erreurs à trouver


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

5 Erreurs à trouver

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

bizzard4

Membre Club
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 !

~~ Cor
dialement 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_

Membre Club
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

Membre Club
?????????? explique un peu plus si cé vraiment la -_-

~~ Cordialement Francois Gingras
mercredi 15 novembre 2006 à 22:34:54 | Re : 5 Erreurs à trouver

_dune2_

Membre Club
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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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 : 0,530 sec (4)

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