begin process at 2012 05 25 12:12:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Autres asm

 > 

probleme avec repne scasb


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

probleme avec repne scasb

mardi 28 décembre 2004 à 11:44:37 | probleme avec repne scasb

cbil


débutant en c/c++, flash et asm- Me contacter


(programmation en ASM model small avec TASM)

Un petit soucit avec repne et scasb, ex :


cld
mov di, offset lect
mov al, 'N'
mov cx, [llect]
repne scasb

lect contient les caracteres, et llect le nombre de caractere dans lect.

je souhaite savoir si il est arriver jusqu'au bout de lect ou si il y a trouve le N. Normalement, si il a ete jusqu'au bout, cx=0 et si il a trouve un N, ZF=1 mais lorsque je fais "jz xxxx" pour faire un saut si ZF=1 (il y a un 'N'), il saute dans tous les cas (N ou pas N)........je ne comprend pas ...... Pourquoi ?

Merci d' avance
mardi 28 décembre 2004 à 13:08:36 | Re : probleme avec repne scasb

patatalo

Membre Club Administrateur CodeS-SourceS
salut,

c peut etre ton processeur qui a un bug et qu'il faudrait changer
;-)

sinon, je pense que tu ne fournis pas le code nécessaire pour trouver ton bug. A mon avis c une modif des flags avant le test qui met à zero tout le temps.

@++
mardi 28 décembre 2004 à 13:38:18 | Re : probleme avec repne scasb

cbil


débutant en c/c++, flash et asm- Me contacter

merci de ta reponse !


g essaye de mettre ZF à 0 avant puis apres la fonction repne scasb.

RESULTAT :

c l'instruction repne scasb qui met tout le temps ZF=1 qu'il y ai un N ou non !

Par contre, il repere bien le N quand il y en a un !

Apres le jz xxxx, j'ai mis une instructin dans le cas ou il n' y a plus de N puisqu'il n'a pas fait de saut, c qu'il n'y en a plus. mais il fait toujours le saut......

(Le but de cet instructions est de trouver un N dans un fichier texte (prealablement mis dans une variable "duper"(--> lect db 500 dup (0) ). (aucun probleme de ce cote la : j'ai mis une instruciton qui affiche le contenu de la variable pour etre sur qu'il a bien le texte du fichier.txt
mardi 28 décembre 2004 à 15:47:03 | Re : probleme avec repne scasb

patatalo

Membre Club Administrateur CodeS-SourceS
re,

evidemment que c ta fonction scasb qui met ZF a 1 ( sinon quel interet du repne ? ) mais seulement si un 'N' est present dans l'interval 0...(ecx-1).

tu n'as donc bien sur pas besoin de mettre le flag ZF a 0 avant.

mais il y a que deux solutions:
revoit ton code ou change ton processeur car si ZF=1 c qu'il y a un 'N' dans l'interval lect[0...(ecx-1)].

PS: je ne crois pas a la solution du processeur defectueux.

@++
mardi 28 décembre 2004 à 17:27:07 | Re : probleme avec repne scasb

cbil


débutant en c/c++, flash et asm- Me contacter


je n'y comprend vraiment rien : j'ai refait un petit prog jute pour tester ce probleme et c pareil :


ideal
dosseg
model small
stack 200h
include "macros.asm"


dataseg


lect db "Je suis ici et Non la bas"
llect dw $-lect
nnn db "Il y a un N"
lnnn dw $-lnnn
pasn db "Il n'y a pas de N"
lpasn dw $-pasn
fligne db 0ah, 0dh


codeseg

debut: mov ax, @data
mov ds, ax

ecrire 2, fligne

cld
mov di, offset lect
mov al, 'N'
mov cx, [llect]
repne scasb
jz vrai

ecrire [lpasn], pasn
jmp fin

vrai: ecrire [lnnn], nnn

fin:

exit
end debut





il devrait me mettre le message "Il y a un N" mais il me met "Il n'y a pas de N".. J'ai peut etre mal compris le focntionnement de repne et scasb.....
mardi 28 décembre 2004 à 18:14:47 | Re : probleme avec repne scasb

patatalo

Membre Club Administrateur CodeS-SourceS

re,

hi hi hi

nnn db "Il y a un N"
lnnn dw $-lnnn ; <--- y'a un bins là

@++

mardi 28 décembre 2004 à 18:21:11 | Re : probleme avec repne scasb

cbil


débutant en c/c++, flash et asm- Me contacter

merci

j'ai corrigé mais c pareil

a+


Cette discussion est classée dans : probleme, mov, lect, repne, scasb


Répondre à ce message

Sujets en rapport avec ce message

REP SCASB 32 bits [ par Bombela ] S'lut !J'arrive pas à utiliser REP SCASB en 32 bits.La boucle ne s'efectue qu' une fois dans tous les cas...Un exemple :STD ; on incrémentemov ecx, 10 probleme avec l interruption affichage de chaine [ par M0NTOYA ] bon voila mon probleme ,qd j utilse cette procedure(presentation) pour afficher une chaine de caractere presentation PROC PUSHA MOV AH,09h INT 21h POP probleme avec l interruption affichage de chaine [ par M0NTOYA ] bon voila mon probleme ,qd j utilse cette procedure(presentation) pour afficher une chaine de caractere presentation PROC PUSHA MOV AH,09h INT 21h POP Erreur de segment avec si [ par benstan ] Bonjour j'ai un probleme que j'arrive pas a comprendre alors que je sais que c'est à cette endroit. Mon probleme c'est que quand je passe les 3 lignes tasm [ par yosrasouaifi ] DOSSEG ;Modele de segmentation DOS .MODEL SMALL ;Fixe le modele de segmentation :petit modele .STACK 100h .DATA mes afficher la somme de 2 entiers superieur à 9 [ par Benh_m ] Bonjour à tous ! Alors voila, j'ai un devoir en Assembleur à faire et j'ai un problème : je dois faire la somme de deux entiers, jusque la tout va bi débutant besoin d'aide sur programme ... [ par babar34fr ] Bonjour a tous je vient vers vous afin d'avoir un peu d'aide , Débutant en asm , j'ai télécharger le logicie w32dasm ( en parlant de celui-ci , est-ce Program received signal SIGFPE,Arithmetic exception. [ par petitete ] Bonjour!! J'aimerais solliciter votre aide pour me débloquer. Je dois écrire un programme en nasm pour connaître le nombre d'éléments pairs et impairs Comment utiliser une variable ?! lorsque l'on utilise déjà ESI et EDI dans la PROC. [ par rebixav ] Voilà mon problème, je débute en assembleur et je l'utilise essentiellement pour créer des procédure pour visual basic ou C voici une de mes procédure


Nos sponsors


Sondage...

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 : 0,749 sec (3)

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