Afficher une chaine de caractere dans le sens inverse

Signaler
Messages postés
5
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
17 février 2008
-
Messages postés
142
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
29 janvier 2016
-
Bonjour,

Je suis depsuis hier aprem sur un prog et ca fait des heures que je cherche (en changeant le prog et en cherchant sur google et partout) mais pas moyen de trouver la solution.

Donc je veux afficher une chaine de caractere, caractere par caractere dans le sens direct et dans le sens inverse en mode adressage indexé direct.
Le sens direct marche mais l'inverse.

Voila mon programme :

TITLE Affiche la chaine de caractere, caractere par caractere dans le sens direct et dans le sens inverse en mode adressage indexé direct
;******************************************************
; *
; Programme qui affiche la chaine de caractere, caractere par *
; caractere dans le sens direct et dans le sens inverse en mode *
; adressage indexé direct *
; *
;******************************************************
DOSSEG
.MODEL SMALL

.STACK 100h

.DATA
message DB "Mise en oeuvre des differents modes d'adressage$"
message2 DB 13,10,"Dans le sens direct : $"
message3 DB 13,10,"Dans le sens inverse : $"
message4 DB 13,10,"$"

.CODE
mov ax,@data
mov ds,ax

;***********************TRAITEMENT***********************

mov ah, 09h ; Affichage de chaine
mov dx, OFFSET message ; Transfert dans dx l'adresse de la chaine
int 21h ; Interruption de l'affichage

mov ah, 09h ; Affichage de chaine
mov dx, OFFSET message2 ; Transfert dans dx l'adresse de la chaine
int 21h ; Interruption de l'affichage

mov cx,47 ; cx prend la valeur 47 (nombre de boucles)
mov bx, offset [message] ; bx prend comme valeur l'adresse de message
mov si,0 ; le registre si prend la valeur 0
et1 : mov ah,02h ; Affichage de caractere
mov dl, [message+si] ; dl prend la valeur du premier caractere de message + si
int 21h ; Interruption de l'affichage
inc si ; On incrémente si
LOOP et1

mov ah, 09h ; Affichage de chaine
mov dx, OFFSET message3 ; Transfert dans dx l'adresse de la chaine
int 21h ; Interruption de l'affichage

mov ah, 09h ; Affichage de chaine
mov dx, OFFSET message4 ; Transfert dans dx l'adresse de la chaine
int 21h ; Interruption de l'affichage

mov si,46 ; le registre si prend la valeur 46
et2 : mov ah,02h ; Affichage de caractere
mov dl, [message+si] ; dl prend la valeur du premier caractere de message + si
int 21h ; Interruption de l'affichage
add si,-1 ; On décrémente si
LOOP et2

;*************************FIN****************************

mov ax,4c00h
int 21h

END

3 réponses

Messages postés
5
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
17 février 2008

Bon alors je vois de bouton pour editer le message donc desolé pour la non lisibilité.

Je retape :
Je suis depuis hier aprem sur un prog et ca fait des heures que je cherche (en changeant le prog et en cherchant sur google et partout) mais pas moyen de trouver la solution. Donc je veux afficher une chaine de caractere, caractere par caractere dans le sens direct et dans le sens inverse en mode adressage indexé direct. Le sens direct marche mais l'inverse.


J'ai mi le prog a cette adresse : http://oriion.free.fr/progasm.txt

Merci d'avance.
Messages postés
5
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
17 février 2008

Desolé on y voit rien, je comprend rien a ce forum.
Messages postés
142
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
29 janvier 2016
1
Salut
Tu as oublié d'initialiser CX  dans la deuxième boucle. Il y a aussi quelques maladresses dans ton code. Par exemple mov bx,offset message n'est pas utilisé etc.
Amicalement