incrémentation de cx

incrémentation de cx - ASM - Programmation

Marsh Posté le 26-05-2005 à 12:46:56    

voici un bout de code:
 
quand j'ajoute la valeur de CX à BX pour passer au caractère suivant,car je veux incrémenter
de la valeur de CX le registre BX,au
bout de 2 passages,il m'en zappe 1!!
 
ex: j'ai "clbr" et lui me teste 'c',puis 'l', puis il saute et passe à 'r' ????
---------------------------------
mov bx,dx;
mov cx,0;
 
comp1:
add bx,cx;
lea si,[bx];
mov al,[si];
call saut;
 
push ax;
mov ah,0eh;
int 10h;
call pauz;
pop ax;
 
call saut;
lea si,[char];
add si,cx;
cmp al,[si];                  
jne fin;                      
inc cx;                        
cmp cx,5;
jne comp1;
mov dx,msglog2;
call printf;
jmp fin;
---------------------------------
 
en fait j'ai réussi à résoudre le soucis j'ai mis INC BX,mais j'aimerais comprendre!
 
par ailleurs des fois lorsque je saisis un mot au clavier, qd je regarde dans dx, il m'affiche la valeur d'une variable! mais il prends bien en compte quand même ce que j'ai tapé au clavier????
 
merci!

Reply

Marsh Posté le 26-05-2005 à 12:46:56   

Reply

Marsh Posté le 26-05-2005 à 12:53:30    

Utilise donc OllyDbg, ça te sautera aux yeux :o


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-05-2005 à 13:30:25    

C'EST UN .COM: ollydbg ne marche pas avec!

Reply

Marsh Posté le 26-05-2005 à 13:34:44    

ben compile un exe :spamafote:
(qu'est ce que tu fous avec un .com en 2005 ? t'as que 64 Ko de RAM ou quoi ?[:kiki])


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-05-2005 à 13:41:27    

doucement.. :s je début! faut bien commencer par quelque chose pour bien piger les mécanismes de l'asm et le fonctionnement des mémoires,registres...etc
d'ailleurs,avec NASM,c quoi la syntaxe pour de l'exe?

Reply

Marsh Posté le 26-05-2005 à 14:02:42    

bin t'as une double incrémentation,
 
si tu fais add bx,cx et inc cx
ça va te faire:
bx cx
0  1
1  2
3  3
6  4
10 5
....
...
 
etc
 
si c'est ce que je pense, alors:
comp1:  
add bx,cx;  
lea si,[bx];
 
devrait être changé en:
comp1:  
lea si,[bx+cx]
 
 

Reply

Marsh Posté le 26-05-2005 à 14:03:51    

ou un truc du genre, tu te paumes avec ton pointeur....

Reply

Marsh Posté le 26-05-2005 à 14:08:54    

ah oui! g compri! :D
 
en fait il faudrait restaurer a chaque boucle la valeur BX
j'avais mal fait mon compte.
au fait alors, y'a des debugger en .com ou pas? autre que débug j'entend

Reply

Marsh Posté le 26-05-2005 à 14:20:30    

bin eu.... ché pas :D
 
sinon pour ton truc y'a toujours moyen de simplifier, tu peux penser en C style:
 
int my_strlen( const char *String )
{
   int len=0;
   while( string[len++] )
        ;
   return len;
}
 
 
bin en asm, tu peux faire un strlen +ou- comme ça:
 
mov si,String
xor cx,cx
 
loop:
mov al,[si+cx] ; ptet BYTE PTR
inc cx
test al,al
jnz loop
 
a toi d'aplanir qui fait quoi


Message édité par bjone le 26-05-2005 à 14:22:13
Reply

Marsh Posté le 26-05-2005 à 14:25:12    

merci pour vos réponse!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed