Comparaison ASSEMBLEUR asm

Fermé
hugodecasta Messages postés 106 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 30 août 2014 - 29 déc. 2012 à 22:42
hugodecasta Messages postés 106 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 30 août 2014 - 4 janv. 2013 à 18:36
Bonjour, j'ai écrit un prgramme avec une entrée de l'utilisateur ah,3f et je voudrait comparé le résultat obtnue (dans dx) avec par exemple le string : 'quitter'
et je veut que si l entrée est égale a quitter, le programme se ferme

PLEASE HELP ME

merci




A voir également:

1 réponse

nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
30 déc. 2012 à 08:08
Hé bien, tu as deux emplacements mémoire de taille variable à comparer donc il te suffit de récupérer la taille ou de compter sur un zéro terminal puis d'ajuster les deux couples de segment:offset. Ensuite tu fais une boucle dans laquelle tu incrémentes les offsets et le tour est joué! Allez c'est pas compliqué et il faut que tu essayes!
0
hugodecasta Messages postés 106 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 30 août 2014
30 déc. 2012 à 10:58
ok merci je vais essayer ;)
0
hugodecasta Messages postés 106 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 30 août 2014
30 déc. 2012 à 15:10
ta pas un exemple stepli de code asm avec une cmp de string input et un string déja présente ^^' ?

merci
0
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
Modifié par nicocorico le 30/12/2012 à 15:29
Je te rappelle que tu parles pas à ton pote là, soigne donc un peu ta syntaxe par respect pour ceux qui peuvent être amenés à t'aider...
Et navré j'ai pas d'exemple de code non car je fais pas d'asm 16 bits, cependant si tu commence et que tu me montre où ça bloque ou même si ça marche pas du tout je pourrais t'aider!
Ceci dit c'est très basique, si t'as pu faire un os par toi-même je vois pas trop ce qui peut te bloquer là-dessus, il s'agit de comparer deux emplacements mémoire octet par octet rien de plus...
0
hugodecasta Messages postés 106 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 30 août 2014
30 déc. 2012 à 16:35
désolé pour la syntaxe mais je nous estime juste comme une communauté ce n'est en aucun cas une forme d'irrespect mais juste un moyen d'apaiser l'atmosphère alors tempi pour la syntaxe mais j préfère me concentrer sur le problème que sur la "syntaxe" des forumers (c'est d'ailleur le but de ce forum) ...

voici mon code:

USE16

commancer:
mov ax, 07C0h
add ax, 288 ;mettre l'os en 512
mov ss, ax
mov sp, 4096
mov ax, 07C0h
mov ds, ax


mov ah, 09h
mov al, 'A'
mov bl, 07h
mov cx, 04h
int 10h

jmp $

times 510-($-$$) db 0
dw 0xAA55

bon alors voila ici j'ai mit les rudiments de l'os le boot... et je veut déja savoir comment j'enregistre un string input dans un emplacement mémoire (je c qu'on peut le faire grace au int 21 mais on ne peut les utiliser dans un nouvel os)... et je veut ensuite comparer cette empacement avec un emplacement ou est placé le string réference...
0
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
30 déc. 2012 à 17:13
Oui si tu veux, mais considère alors qu'on est pas une communauté de massacreur de syntaxe...mais de prog, et en prog la syntaxe ça compte et pas qu'un peu!
Et là finalement il faut que tu réserve un emplacement avec DB pour accueillir la chaine entrée par l'utilisateur, puis un autre avec ta chaine à comparer, et il suffit ensuite de lire caractère par caractère et de comparer celui d'une chaine à l'autre en provenance de la chaine constante...
Et tout dépend comment tu détermine la taille de tes chaines aussi, en zéro ou caractère spécial terminal, ou par taille au début?
0