2015-12-14 1 views
0

Je suis novice en langage assembleur (MASM) et j'aimerais lire les blocs 64 bits d'un fichier .txt, les chiffrer et les écrire dans un autre fichier .txt fichier. J'ai essayé d'utiliser ce code pour la lecture:Comment lire des blocs 64 bits à partir d'un fichier texte dans l'assembly

push offset fscanf_format 
push pointer_source 
call fscanf 
add esp,12 
cmp eax,0ffffffffh; 

fscanf_format est défini comme:

fscanf_format db "%lld",0 

Je ne suis pas tout à fait sûr que cela fonctionne correctement, et je ne sais pas vraiment comment utiliser la blocs pour faire des opérations sur eux.

+1

On ne sait pas ce que vous entendez par '64bit blocks' ... peut-être que vous voulez' 'fread' pas fscanf'. – Jester

+0

Je ne suis pas sûr non plus. Le fait est que je dois lire 64 bits, les chiffrer, les écrire dans le fichier de destination, puis passer au 64 bits suivant et répéter jusqu'à ce que j'arrive à la fin du fichier source .txt. Peut-être que je devrais utiliser Fread, mais je ne sais pas comment. –

+0

Votre fichier d'entrée contient-il des chiffres sous forme de texte ou non? – Jester

Répondre

0

manquant un paramètre:

 .data 
block64 dq  0      ;64 bit 
fscanf_format db "%lld",0    ;unsigned would be %llu 
     ;... 
     .code 
     ;... 
     push offset block64   ;offset of qword variable 
     push offset fscanf_format  ;format string "%lld",0 
     push pointer_source   ;file pointer 
     call fscanf 
     add  esp,12 
     ... 
+0

J'ai fait ce que vous avez suggéré. Pourriez-vous me dire pourquoi le pointeur devrait être un qword? J'ai considéré 'pointer_source dd 0' –

+0

@ cma.2602 -db = 8 bits, dw = 16 bits, dd = 32 bits, dq = 64 bits. – rcgldr