begin process at 2012 05 24 02:46:07
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Applications ms-dos

 > DUMP HEXADECIMAL

DUMP HEXADECIMAL


 Information sur la source

Note :
6 / 10 - par 1 personne
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Applications ms-dos Niveau :Débutant Date de création :27/10/2004 Vu / téléchargé :5 990 / 152

Auteur : quoi

Ecrire un message privé
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

permet de faire des fichier de resources
plus pratique qu'un fichier *.rc ou il faut utiliser plusieurs appi pour recuperer
l'offset de la resource c'est un prog qui utilise que ds fonctions dos
j'avais fait le même prog avec des apis grande difference de vitesse

LINK version 5.60.339

Source

  • .386
  • code16 segment use16
  • assume cs:code16,ds:code16
  • octets db 20 dup(0)
  • buffer db 100 dup(0)
  • format db '0123456789ABCDEF',0
  • hf_cible dw ?
  • hf_source dw ?
  • nbwrite dw ?
  • sizefile dd 0
  • nbread dd 0
  • path_fc db 100 dup(0)
  • fn_source db 100 dup(0)
  • label_name db 12 dup(0)
  • text1 db 9h,'Ajout dans un fichier de resource *.hex d'
  • db 82h,'j',85h,20h,82h,'xistant ?',0Dh,0Ah
  • db 9h,'si oui : chemin + nom de fichier + [ENTER],sinon :'
  • db '[ENTER]',0Dh,0Ah,'$'
  • text3 db 0Dh,0Ah,9h,'Donnez un nom pour le label et validez'
  • db '[ENTER]',13,10,9,'nom :','$'
  • usage db 0Dh,0Ah,9h,'Faites glisser sur l',27h,'executable le'
  • db 'fichier que vous voulez'
  • db 0Dh,0Ah,9h,'utiliser comme resource dans un programme.','$'
  • start16:
  • ;pour lire la ligne de commande ds=es
  • ;pour lire les données ds=cs
  • push cs
  • pop ds
  • cmp byte ptr es:[80h],0
  • je @usage
  • ;------------------------------------ouverture du fichier source-------------------------------
  • mov bl,es:[80h]
  • xor bh,bh ;bx=longueur ligne de command
  • mov byte ptr es:[81h+bx],0 ;la chaine doit ce terminer par 0
  • mov ax,3d02h ;ouvre fichier source
  • push es
  • pop ds
  • mov dx,82h
  • int 21h
  • push cs
  • pop ds
  • mov hf_source,ax ;handle
  • mov ax,4202h ;optenir la taille du fichier source
  • mov bx,hf_source
  • xor cx,cx
  • xor dx,dx
  • int 21h
  • mov bx,dx
  • shl ebx,16
  • mov bx,ax
  • mov sizefile,ebx
  • mov ax,4200h ;remettre le pointeur au début du fichier source
  • mov bx,hf_source
  • xor cx,cx
  • xor dx,dx
  • int 21h
  • ;---------------------demande à l'utilisateur si ajout ou nouveau-------------
  • mov ah,9h
  • mov dx,offset text1
  • int 21h
  • mov byte ptr [path_fc],98 ;indique la taille max du buff avant appelle
  • ;fonction.
  • xor ax,ax
  • mov ah,0Ah
  • mov dx,offset path_fc
  • int 21h ;ecriture ds buff
  • mov bl,[path_fc+1]
  • cmp bl,0 ;faut-il creer un nouveau fichier ?
  • je newfile
  • add bl,2
  • mov byte ptr [path_fc+bx],0
  • mov ax,3d02h ;ouvre fichier cible
  • push cs
  • pop ds
  • lea dx,[path_fc+2]
  • int 21h
  • mov hf_cible,ax ;handle
  • mov ax,4202h ;mettre le pointeur à la fin du fichier
  • mov bx,hf_cible
  • xor cx,cx
  • xor dx,dx
  • int 21h
  • mov ah,40h ;écris saut de ligne retour chariot
  • mov bx,hf_cible
  • mov cx,2
  • mov word ptr [buffer],0A0Dh
  • lea dx,[buffer]
  • int 21h
  • jmp appendfile
  • newfile:
  • ;---------------------------------creation du fichier cible----------------------------------
  • mov bl,es:[80h]
  • xor bh,bh ;bx=longueur ligne de command
  • mov cx,bx
  • mov di,81h
  • mov al,'.' ;cherche '.'dans ligne de command
  • repne scasb
  • mov dword ptr es:[di],00584548h ;change l'extenssion en '.HEX'
  • mov ah,3Ch ;cree le fichier *.hex
  • xor cx,cx
  • push es
  • pop ds
  • mov dx,82h
  • int 21h
  • push cs
  • pop ds
  • mov hf_cible,ax ;handle
  • appendfile:
  • ;----------------------------creer label data--------------------
  • mov ah,9h
  • mov dx,offset text3
  • int 21h
  • mov byte ptr [label_name],10 ;indique la taille max du buff avant appelle
  • ;fonction.
  • mov ah,0Ah
  • mov dx,offset label_name
  • int 21h ;ecriture ds buff
  • mov bl,[label_name+1]
  • add bx,2 ;bx=taille chaine + 2 premiers octs du buffer
  • mov byte ptr [label_name+bx],20h ;ajout d'un espace en fin de chaine
  • ;--------------------LECTURE FICHIER SOURCE ECRITURE FICHIER CIBLE---------------------------
  • xor cx,cx
  • mov ah,40h
  • mov cl,[label_name+1] ;nombre caractères tapé au clavier
  • inc cl ;+1 puisqu'ajout d'un espace
  • lea dx,[label_name+2] ;addr chaine
  • mov bx,hf_cible
  • int 21h ;ecriture du label_name dans fichier cible
  • nextline:
  • mov ax,3F00h ;lit 16 octets ds fichier source
  • mov bx,hf_source
  • mov cx,16
  • mov dx,offset octets ;les stoke dans octets
  • int 21h
  • test ax,ax ;fin de lecture du fichier ?
  • je @4
  • ;------------------------------determiner le nombre de bytes à ecrire.
  • push ax
  • add nbread,eax
  • mov bx,5
  • mov edx,sizefile
  • cmp edx,nbread ;est-ce que le nombre total d'octets lu = taille fichier ?
  • jne @1
  • mov bx,3
  • @1:
  • mov cx,ax
  • shl ax,2
  • add ax,cx ;mult par 5 le nbr d'octets
  • add ax,bx ;et add bx
  • mov nbwrite,ax ;nbr d'octets à écrire
  • ;-------------------------------
  • lea di,[buffer]
  • lea bx,[octets]
  • mov dword ptr [di],20206264h ;'db '
  • add di,4
  • pop cx
  • formatage:
  • mov byte ptr [di],30h ;'0'
  • call FormatByte
  • mov word ptr [di],2C68h ;'h,'
  • add di,2
  • loop formatage
  • dec di ;pas ecrire virgule si fin de ligne
  • mov word ptr [di],0A0Dh ;saut de ligne retour chariot
  • mov ah,40h ;écris ligne ds fichier cible
  • mov bx,hf_cible
  • mov cx,nbwrite
  • mov dx,offset buffer
  • int 21h
  • jmp nextline
  • @usage:
  • mov ah,9h
  • mov dx,offset usage
  • int 21h
  • mov ah, 00h
  • int 16h
  • jmp @5
  • @4:
  • mov ah,3Eh ;fermer handle
  • mov bx,hf_cible
  • int 21h
  • @5:
  • mov ax,4C00h ;quit
  • int 21h
  • Formatbyte proc
  • xor ax,ax
  • xor dx,dx
  • mov si,offset format
  • mov al,[bx]
  • inc bx
  • mov dl,al
  • shr al,4
  • and dl,00001111b
  • push si
  • add si,ax
  • mov al,[si]
  • inc di
  • mov [di],al
  • pop si
  • add si,dx
  • mov al,[si]
  • inc di
  • mov [di],al
  • inc di
  • ret
  • Formatbyte endp
  • code16 ends
  • ; ---------------------------------------------------------------------------
  • ; SEGMENT DE STACK
  • stack16 segment stack
  • db 200h dup (?)
  • stack16 ends
  • end start16
.386
code16  segment use16
        assume cs:code16,ds:code16



octets          db      20 dup(0)
buffer          db      100 dup(0)
format          db      '0123456789ABCDEF',0
hf_cible        dw      ?
hf_source       dw      ?
nbwrite         dw      ?
sizefile        dd      0
nbread          dd      0
path_fc         db      100 dup(0)
fn_source       db      100 dup(0)
label_name      db      12 dup(0)
text1           db      9h,'Ajout dans un fichier de resource *.hex d'
                db      82h,'j',85h,20h,82h,'xistant ?',0Dh,0Ah
                db      9h,'si oui : chemin + nom de fichier + [ENTER],sinon :'
                db      '[ENTER]',0Dh,0Ah,'$'
text3           db      0Dh,0Ah,9h,'Donnez un nom pour le label et validez' 
                db      '[ENTER]',13,10,9,'nom :','$'
usage           db      0Dh,0Ah,9h,'Faites glisser sur l',27h,'executable le' 
                db      'fichier que vous voulez'
                db      0Dh,0Ah,9h,'utiliser comme resource dans un programme.','$'

start16:
        ;pour lire la ligne de commande  ds=es
        ;pour lire les données ds=cs

        push     cs
        pop      ds

        cmp  byte ptr es:[80h],0
        je   @usage

;------------------------------------ouverture du fichier source-------------------------------

         mov     bl,es:[80h]
         xor     bh,bh                           ;bx=longueur ligne de command

         mov     byte ptr es:[81h+bx],0          ;la chaine doit ce terminer par 0
         
         mov   ax,3d02h                          ;ouvre fichier source
         push  es
         pop   ds
         mov   dx,82h
	   int   21h
         push  cs
         pop   ds
	   mov   hf_source,ax                      ;handle
         
         

         mov    ax,4202h                         ;optenir la taille du fichier source
         mov    bx,hf_source
         xor    cx,cx
         xor    dx,dx
         int    21h
         mov    bx,dx
         shl    ebx,16
         mov    bx,ax
         mov    sizefile,ebx

         mov    ax,4200h                       ;remettre le pointeur au début du fichier source
         mov    bx,hf_source
         xor    cx,cx
         xor    dx,dx
         int    21h


;---------------------demande à l'utilisateur si  ajout ou nouveau-------------
        mov     ah,9h
        mov     dx,offset text1
        int     21h
        

        mov      byte ptr [path_fc],98               ;indique la taille max du buff avant appelle
                                                     ;fonction.   
        xor      ax,ax
        mov      ah,0Ah
        mov      dx,offset path_fc              
        int      21h                                 ;ecriture ds buff

        mov     bl,[path_fc+1]
        cmp     bl,0                                 ;faut-il creer un nouveau fichier ?           
        je      newfile

        add     bl,2
        mov     byte ptr [path_fc+bx],0
        
      
      
        
         mov   ax,3d02h                              ;ouvre fichier cible
         push  cs
         pop   ds
         lea   dx,[path_fc+2]
	   int   21h
         mov   hf_cible,ax                           ;handle
         
         mov    ax,4202h                             ;mettre le pointeur à la fin du fichier
         mov    bx,hf_cible
         xor    cx,cx
         xor    dx,dx
         int    21h

         mov   ah,40h                                ;écris saut de ligne retour chariot
         mov   bx,hf_cible
   	   mov   cx,2
         mov   word ptr [buffer],0A0Dh
         lea   dx,[buffer]
	   int   21h

         jmp    appendfile
       

newfile:

;---------------------------------creation du fichier cible----------------------------------       

         mov     bl,es:[80h]
         xor     bh,bh                           ;bx=longueur ligne de command

         mov     cx,bx   
         mov     di,81h
         mov     al,'.'                          ;cherche '.'dans ligne de command  
         repne   scasb                 

         mov     dword ptr es:[di],00584548h     ;change l'extenssion en '.HEX' 
         

         mov     ah,3Ch                          ;cree le fichier *.hex
         xor     cx,cx
         push    es
         pop     ds
         mov     dx,82h
         int     21h
         push    cs
         pop     ds
         mov     hf_cible,ax                     ;handle

appendfile:
         
;----------------------------creer label data--------------------      
        mov     ah,9h
        mov     dx,offset text3
        int     21h

        mov      byte ptr [label_name],10          ;indique la taille max du buff avant appelle
                                                   ;fonction.   
        
        mov      ah,0Ah
        mov      dx,offset label_name              
        int      21h                               ;ecriture ds buff
        
        mov     bl,[label_name+1]              
        add     bx,2                              ;bx=taille chaine + 2 premiers octs du buffer
        mov     byte ptr [label_name+bx],20h      ;ajout d'un espace en fin de chaine

               


;--------------------LECTURE FICHIER SOURCE ECRITURE FICHIER CIBLE---------------------------


         xor   cx,cx
         mov   ah,40h
         mov   cl,[label_name+1]              ;nombre caractères tapé au clavier
         inc   cl                             ;+1 puisqu'ajout d'un espace
         lea   dx,[label_name+2]              ;addr chaine
         mov   bx,hf_cible
 	   int   21h                            ;ecriture du label_name dans fichier cible

    
                
 nextline:
        
        
        mov   ax,3F00h                        ;lit 16 octets ds fichier source
        mov   bx,hf_source
        mov   cx,16                    
        mov   dx,offset octets                ;les stoke dans octets       
        int   21h
        test  ax,ax                           ;fin de lecture du fichier ?   
        je    @4
;------------------------------determiner le nombre de bytes à ecrire.        
        push  ax
        add   nbread,eax
        mov   bx,5
        mov   edx,sizefile
        cmp   edx,nbread          ;est-ce que le nombre total d'octets lu = taille fichier ? 
        jne     @1
        
        mov    bx,3
        
@1:                
        
       
        mov   cx,ax                  
        shl   ax,2
        add   ax,cx                              ;mult par 5 le nbr d'octets  
        add   ax,bx                              ;et add bx

        mov   nbwrite,ax                         ;nbr d'octets à écrire
;-------------------------------        
              
        lea   di,[buffer]                        
        lea   bx,[octets]
        
        mov   dword ptr [di],20206264h          ;'db  '
        add   di,4

       
        
        pop   cx
        
       
   formatage:
        mov   byte ptr [di],30h                  ;'0'
        call  FormatByte
        mov   word ptr [di],2C68h                ;'h,'
        add   di,2
        loop  formatage
        
        dec   di                                 ;pas ecrire virgule si fin de ligne
        
        mov   word ptr  [di],0A0Dh               ;saut de ligne retour chariot
        
        mov   ah,40h                             ;écris ligne ds fichier cible
        mov   bx,hf_cible
 	  mov   cx,nbwrite
	  mov   dx,offset buffer
	  int   21h

        jmp   nextline

@usage:
        
        mov     ah,9h
        mov     dx,offset usage
        int     21h
        mov   ah, 00h                 
        int   16h

        jmp     @5

@4: 
        mov     ah,3Eh                          ;fermer handle
        mov     bx,hf_cible
        int     21h
@5:      

        mov     ax,4C00h                        ;quit
        int     21h
         
 Formatbyte proc
 
        xor   ax,ax
        xor   dx,dx
        mov   si,offset format
        mov   al,[bx]
        inc   bx
        mov   dl,al
        shr   al,4
        and   dl,00001111b
        push  si
        add   si,ax
        mov   al,[si]
        inc   di
        mov   [di],al
        pop   si
        add   si,dx
        mov   al,[si]
        inc   di
        mov   [di],al
        inc   di
        ret
        
Formatbyte endp                    
        
code16  ends                           

; ---------------------------------------------------------------------------
; SEGMENT DE STACK

stack16 segment stack
        db      200h dup (?)
stack16 ends

        end start16                     
                                        

 Conclusion

pour compiler vous devez avoir le LINK version 5.60.339
vous avez qu'à taper LINK version 5.60.339 dans un moteur de recherche
je l'ai renommer link16 et je l'ai mis dans le repertoire masm32/bin


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip TEXTURE AVEC DIRECTX9
Source avec Zip FLOATTOHEX CODE DE BRUNEWS RETRENSCRIS EN ASM PAR MOI
Source avec Zip Source avec une capture PATCH TOUT EXE 32BITS POUR Y INSERER UNE IMAGE (GIF ,JPG,BMP...
Source avec Zip SPLASH SCREEN
Source avec Zip EXTRACTICONES

 Sources de la même categorie

Source avec Zip ASYNC LIAISON INTERNET EN MODE ASYNCHRONE WININET par ToutEnMasm
Source avec une capture LECTURE CHAINE ET COMPARAISON[MASM] par w4kfu
Source avec une capture LECTURE TOUCHE CLAVIER[MASM] par w4kfu
Source avec Zip UN RESOLVEUR SUDUKO AVEC ASSEMBLEUR NASM par msavyo1
Source avec Zip TESTEUR DE COMPATIBILITTÉ VESA (SUPER VGA) par bofur

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 1,607 sec (3)

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