Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : 5 Erreurs à trouver [ Divers / Débutant(e) ] (bizzard4)

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é 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 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 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 Mini OS !! debut [ par Hardouz ] salut a tous ! je debut en ASM je vx bosser un px en ASM je connais l'architechture ect !!! j'ai fais un pti programme mais il ya un probléme 1/ lors Aligner des données pour le SSE [ par epineurien ] Bonjour à tous !J'ai un petit problème avec du code dont je mesure la vitesse: suivant la compilation, la vitesse varie du simple au double .J'expliqu Avertissement compilo [ par NairodDorian ] Bonjour,J'ai écris un programme qui contient une fonction en full asm pour avoir les meilleurs perfs.Voici le code de la fonction :[CODE]<font color="


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.