Send db to bmp

vincent2795 Messages postés 41 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 4 octobre 2012 - 8 janv. 2010 à 16:41
vincent2795 Messages postés 41 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 4 octobre 2012 - 19 janv. 2010 à 09:31
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 txt mais je n' arrive pas a y sorti mon bmp...

Source.asm
.386
.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

.data
my_file db "test.bmp",NULL
my_bytes db "OwNeDbYp0m1",NULL

;Mybmp
   hFile dd ?
   include bmp.inc ; on retrouve un bmp sous forme DB 
.code
start:
; comme sa sa marche ( ouvrir avec un editeur "notepad++")
; si on met Mybmp a la place de my_bytes sa ne marche plus
  invoke CreateFile,addr my_file,GENERIC_READ or GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0
  mov hFile,eax
  invoke lstrlen,addr my_bytes
  invoke WriteFile,hFile,addr my_bytes,eax,0,0
  invoke CloseHandle,hFile
  
  invoke ExitProcess,0
   
end start

6 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 janv. 2010 à 17:05
QUELLE HORREUR !!!
Faut commencer par apprendre l'ASM.
Une suite de 'invoke' ne donnera qu'une daube, rien de plus.

Disons qu'on a ADDR de my_bytes dans ESI:
lea eax, [esi - 1]
strLEN:
add eax, 1
cmp byte ptr[eax], 0
jne short strLEN
sub eax, esi ; EAX contient srtlen de my_bytes
CELA SANS AUCUN APPEL DE FONCTION !!!

ciao...
BruNews, MVP VC++
0
vincent2795 Messages postés 41 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 4 octobre 2012
8 janv. 2010 à 17:31
ok mais cela ne change pas le resultat...
0
vincent2795 Messages postés 41 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 4 octobre 2012
8 janv. 2010 à 17:44
.386
.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

.data
my_file db "test.bmp",NULL
   hFile dd ?
   include bmp.inc ; on retrouve un bmp sous forme DB  ;Mybmp
   
.code
start: 

invoke CreateFile,addr my_file,GENERIC_READ or GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0
mov hFile,eax

lea esi, Mybmp		
lea eax, [esi - 1]
strLEN:
add eax, 1
cmp byte ptr[eax], 0
jne short strLEN
sub eax, esi

invoke WriteFile,hFile,addr Mybmp,eax,0,0
invoke CloseHandle,hFile 
invoke ExitProcess,0
   
end start


j' ai mis ta suggestion.
il es vrai je ne suis pas du tous du monde informatique, ces pourquoi je suis pas très bon sur le sujet!
Mon probleme perciste, pour un chaine sa fonctionne mais pour mettre mon bmp qui est en db il ne me met sa dans mon fichier "BMÖh".
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 janv. 2010 à 18:54
Tu as calculé strlen() ok mais le chainage sur my_file est fait ??? ben non.

Si tu n'es pas du monde informatique, ça se conçoit fort bien, alors ne perds pas de temps avec l'ASM qui nécessite quelques années de pratique pour sortir quoi que ce soit de correct.

Fais ton prog en C, ce sera nettement plus aisé et tu auras de plus un exe nettement plus performant qu'avec du pseudo ASM.

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vincent2795 Messages postés 41 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 4 octobre 2012
9 janv. 2010 à 09:43
.386
.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

.data
Adress_File db "test.cfg",NULL
hFile dd ?
   include bmp.inc ; on retrouve un bmp sous forme DB  ;Mybmp
   
.code
start: 

invoke CreateFile,addr Adress_File,GENERIC_READ or GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0
mov hFile,eax
;	*
lea esi, Mybmp		
lea eax, [esi - 1]
strLEN:
add eax, 1
cmp byte ptr[eax], 0
jne short strLEN
sub eax, esi
;	*
push 0
push 0
push eax
push offset Mybmp
push hFile
call WriteFile
;	*
invoke CloseHandle,hFile 
;	*
push 0
call ExitProcess
   
end start
0
vincent2795 Messages postés 41 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 4 octobre 2012
19 janv. 2010 à 09:31
UP!

Si quelqu'un sais il faut le dire sa me sert mais sa sert a toutes les personnes qui rencontre le problème.
0
Rejoignez-nous