begin process at 2010 02 09 21:29:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Assembleur

 > 

Divers

 > 

Débutant(e)

 > 

Plantage incomprehensible


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

Plantage incomprehensible

mardi 30 janvier 2007 à 03:05:38 | Plantage incomprehensible

Luong

Bonjour tout le monde,

Voila un petit bout de code qui genere un beau plantage sur mon ordi (memory could not be written) sans que je comprenne vraiment pourquoi. Cela fait il la meme chose chez vous? Et avez vous une explication?
De plus
   si j'enleve les deux premieres lignes du code (lea ...), alors c'est un autre plantage que j'obtiens. 
   si j'enleve la proc HexString du code, ca fonctionne. Pourtant HexString n'est jamais appele dans la partie principale. 
   si j'enleve les deux lignes repe et cmpsd alors ca fonctionne
   

   Je n'y comprends rien.....

; #########################################################################

      .486
      .model flat,stdcall
      option casemap :none   ; case sensitive

; #########################################################################

      include C:\masm32\include\windows.inc
      include C:\masm32\include\user32.inc
      include C:\masm32\include\kernel32.inc

      includelib C:\masm32\lib\user32.lib
      includelib C:\masm32\lib\kernel32.lib

; #########################################################################

.data
  MonPremier     db 0E0h
  MonDeuxieme    db 010h
  MonTitre       db "Titre",0
 MaChaine       db "Essai",0

.code

start:
  lea edi,MonPremier
  lea esi,MonDeuxieme

  mov ecx,8
  std     
  repe cmpsd
  invoke ExitProcess,0

HexString Proc
  invoke MessageBox,0,ADDR MaChaine,ADDR MonTitre,MB_OK
  ret
HexString EndP

end start


Luong

mardi 30 janvier 2007 à 12:13:12 | Re : Plantage incomprehensible

guss

Réponse acceptée !
Bonjour,

Essai d'ajouter l'instruction

cld

après le 'repe cmpsd'


Bonne journée
mardi 30 janvier 2007 à 12:34:29 | Re : Plantage incomprehensible

Luong

Merci guss. Effectivement ca marche. Pourquoi cela? Peut-on conclure a un bug de Windows?

Luong
mardi 30 janvier 2007 à 21:35:45 | Re : Plantage incomprehensible

BruNews

Administrateur CodeS-SourceS
Mias non, il y a juste qu'on est prié de remettre les chose dans l'état où on les trouve.

Le mieux est tout de même de mettre au rebut ces instructions obsolètes, on fait une CompareStr() avec simplement les 3 registres généraux, rien à sauvegarder et ira largement aussi vite.

ciao...
BruNews, MVP VC++
mercredi 31 janvier 2007 à 10:43:06 | Re : Plantage incomprehensible

Luong

Bonjour BruNews,

Je viens juste de débuter en assembleur il y a quelques semaines, d'où mon ignorance sur l'état de l'art. Merci pour l'information. C'est quoi l'histoire de CompareStr()?

Mon problème est de comparer 2 séries d'octets de même longueur de droite à gauche (les grands nombres avec l'octet de poids le plus faible en premier à la façon d'Intel) et de déterminer le plus grand nombre des 2. D'après toi, quelle serait la meilleure façon de faire?

Luong

mercredi 31 janvier 2007 à 18:20:52 | Re : Plantage incomprehensible

BruNews

Administrateur CodeS-SourceS

CompareStr() c'est juste un nom qui me semble causant, le strcmp() en C.

L'octet de poids faible se représente généralement à droite c'est ok, pour déterminer le plus grand nombre on partire donc de la gauche.

Faisons que:
 EBX = nbr octets
 ECX = tab1
 EDX = tab2

xor  eax, eax
test ebx, ebx
je   short done ; count = 0 ON SORT ILLICO
nextBT:
mov  al, [ecx]
sub  al, [edx]
jnz  short done
add  ecx, 1
add  edx, 1
sub  ebx, 1
jnz  short nextBT
done:
shl  eax, 24

En sortie si:
 EAX < 0 alors tab1 < tab2
 EAX > 0 alors tab1 > tab2
 EAX = 0 alors tab1 = tab2

ciao...
BruNews, MVP VC++



Cette discussion est classée dans : code, include, plantage, lib, masm32


Répondre à ce message

Sujets en rapport avec ce message

masm32, include [ par coockiesch ] Hello!!!Plein de bonne volonté, j'ai dl un tuto pour ASM Win32... Voici mon code:.386.MODEL FLAT, STDCALLOPTION CASEMAP : NONEINCLUDE \masm32\in [Screenshot, capture d'écran] Comment l'enregistrer dans un Bitmap ? [ par kinkey_wizard ] Bonjour tout le monde,Voici une source qui pour l'instant a pour effet de prendre une capture de l'écran (par simulation d'appui sur la touche PrintSc [API] Fermer une fenêtre de navigateur ouverte avec une URL. [ par kinkey_wizard ] Bonjour tout le monde, Je vous explique mon problème : je voudais ouvrir une page web (par exemple "http://www.google.fr") dans le navigateur par déf probleme de link [nasm + alink] [ par EEkaMouse ] Salut!j'ai un problème au niveau de l'éditeur de lien.j'ai un programme en *.obj dont la source est la suivante :%include "..\inc\win32n.inc"<br Utilisation d'une Librairie perso avec MASM32 [ par Micro_and_Macro ] Bonsoir à  tous,j'ai créé une  librairie à partir d'une DLL BMP2JPG.dll(de vbfrance) à l'aide de cette url http://win32assembly.online.fr/importlib.ht Messagebox (niveau débutant) [ par Ulala2 ] Bonjour,je suis en train de créer une dll que je vais invoquer en vb6.Tout marche très bien, sauf pour la fonction messagebox dont n'arrive pas à récu md.dll, comment utiliser md5() ? [ par Noit ] J'ai récupéré la dll sur le site de WiteG(le lien se trouve sur le site asmfr)J'arrive à compiler le programme suivant avec masmmais en débuggant il s send db to bmp [ par vincent2795 ] bonjour, j' ai un bmp que j' ai mais dans ma source sous forme "DB" je veux le sortir de ma source et le mettre dans un bmp. j' arrive a y sortire du [MASM32] Probleme de conversion [ par Noit ] Bonjour,J'ai dans EAX une valeur: 67B54J'aimerai afficher cette valeur, plutot que la chaine correspondante, dans une MessageBox.Merci de m'expliquer


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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