Accueil > Forum > > > > pb int 21h ah=0ah
pb int 21h ah=0ah
samedi 24 juillet 2004 à 12:09:20 |
pb int 21h ah=0ah

mat74
|
salut a ts , voila j'ai fais un programme qui est censé lire une chaine entré par l'utilisateur et ensuite la reafficher . Il me demande bien d'entré une chaine mais il ne la reaffiche pas ensuite . Je ne comprend pas . J'utilise l'interruption 0ch puis 0ah pr demander la chaine , et ensuite j'affiche la chaine tel quel avec l'interruption 09h . j'utilise 2 macro un pr lire et 1 pr afficher la chaine . le prog doit donner un exe . j'utilise tasm comme compilateur . voila le code : ; les macros
lire_chaine macro chaine? push ax dx mov ah, 0Ch mov al, 0Ah mov dx, chaine? int 21h pop dx ax endm
Cout macro text? local texte
data segment use16
texte db text?,'$'
data ends
code segment use16
push ax dx
mov ah, 09h mov dx, offset texte int 21h
pop dx ax
code ends
endm
.386
code segment use16
assume cs:code, ds:data, ss:pile
debut:
mov ax, data mov ds, ax
lire_chaine <offset message> Cout <10,13,offset message,10,13>
mov ah, 4ch int 21h
code ends
data segment use16
message db 255,?,254 dup(?),?
data ends
pile segment stack
remplissage db 256 DUP (?)
pile ends
end debut
merci d'avance @+
|
|
mercredi 28 juillet 2004 à 11:15:26 |
Re : pb int 21h ah=0ah

patatalo
|
salut,
Cout <10,13,offset message,10,13> ne peut pas fonctionner car ta macro ne prends pas en charge le passage de paramètre par pointeur.
Cout <10,13,"là, c'est bon",10,13> serait ok
@++
|
|
mercredi 28 juillet 2004 à 13:50:16 |
Re : pb int 21h ah=0ah

mat74
|
je viens d'essayer sa
mov ah, 09h mov dx, offset message int 21h
a la place d'appeller mon macro mais j'ai plusieurs question
-> comment faire pr que mon macro puisse gerer les pointeur sur chaine ? -> comment faire pr rajouter $ ou autre chose comme des saut de ligne a la fin de la chaine av de l'afficher car sa marche seulement si je rentre $ moi ds la saisie ? -> puis ia 1 peti pb , si je tape abc$ ds la saisie il me re-ecrit un espace , puis le caractere ascii num 4 ( un espece de carre de travers ) , puis abc . je crois en fait que il me re-ecrit le caractere num 4 car c'est le nb d'element ds la chaine mais comment l'eviter ? et puis pr l'espace ?
|
|
samedi 31 juillet 2004 à 13:20:37 |
Re : pb int 21h ah=0ah

patatalo
|
re,
message db 255,?,254 dup(?),?
le caractere avec le carré dont tu me parle doit etre le 255 et l'espace doit etre le ? qui doit etre = 0 donc affiche un blanc
la gestion des pointeurs dans ta macro va t'obliger a definir le parametre ( chaine ou pointeur ?)
le + simple pourrait etre de faire 2 macros car en Masm je sais comment avoir des informations sur les parametres mais je ne sais pas si c'est possible avec TASM que je ne connais pas.
donc 2 macros: outtxt et outptr
la premiere prendra en param la chaine: outtxt "mon texte$"
et la deuxième prendra en param le pointeur sur la chaine: Txt db "mon texte$" outptr <offset Txt>
je te laisse le soin de la programmation de cette 2eme Macro car je pense que tu peux trouver beaucoup d'exemples pour t'aider sur le net et peut etre meme sur ce forum.
le petit soucis si tu veux ajouter des caracteres dans ta chaine est que tu va devoir programmer le traitement de cet ajout:
tu copie ta chaine dans un buffer, des que tu rencontre le caractere '$' dans la chaine source ( ou autre caractere, c toi qui décide, ca pourrait etre 0 car c toi qui prog l'ajout, c pas DOS ), tu ajoute 13,10 (CRLF) puis tu finis par ajouter dans ton buffer le caractère de terminaison '$', pour finir, tu envoi l'adresse de ton buffer dans ta macro outptr et le tour est joué.
MakeDOSStr MACRO pStr LOCAL _buff LOCAL @1,@END .DATA _buff db 255 dup(?) .CODE push si di mov si,pStr lea di,[_buff] @1: cmp [si],0 ; pour cet exemple, ma chaine finit par 0 mov al,[si] lea si,[si+1] ; ne modifie pas les flags je @END mov [di],al lea di,[di+1] jmp @1 @END: mov byte ptr [di],13 ; ajoute CRLF mov byte ptr [di+1],10 mov byte ptr [di+2],'$' ; ajoute DOS terminal OutDOSStr <offset _buff> pop di si ENDM
cette exemple n'est pas bien car pas de gestion de taille buffer. Linus serait vert.
@++
|
|
Cette discussion est classée dans : code, chaine, mov, ax, dx
Répondre à ce message
Sujets en rapport avec ce message
rs232 [ par TRAX44 ]
salut,tout premièrement je sais qu'il ya des exemples sur le site!mais mon problème est autre je tiens à comprendre pourquoi mon code ne fonctionne pa
Modifer le vecteur d'interruptions [ par vecchio56 ]
Bonjour J'essaie de refaire la source http://www.cppfrance.com/code.aspx?ID=33558 en assembleur (ca consiste à modifier la routine de l'interruption 0
Graphique [ par RM50Man ]
Bonjour a tous!!!!Je veux tracer une ligne mais ca ne marche pas, je passe les parametre par la pile,et ensuite ds la fonction principale, je remplis
problème : nombres aléatoires random [ par dmontavon ]
Je cherche à générer un nombre aléatoire avec le code :Random: mov dx,128 &
A l'aide... svp [ par monitor100 ]
Bonjour a tous,Je suis completement null en assembler, et il faut que je fasse afficher le résultat de la factoriel de 4 soit 24.est ce que quelqu'un
Boot et heure [ par henri12 ]
je fais un essai de changement de l heure avec l interruption 21h sous le boot l heure n est pas changerpourquoi.286C ;Code de bootsecteur permettan
interruption [ par aboulkhir ]
salut j essaye de gerer le clavier en interruption en asselmbleur voila mon programme je travaille sous debug en invite de commande de windowsclimo
Entrée d'une chaine de cractères [ par w4kfu ]
J'é
Addition ASM [ par GibsonUSA ]
Bonjour a tous, je débute en ASM 16bits et je bloque pour faire une addition de deux chiffres saisis par l'utilisateur. Voila ce que j'ai fais. A l'
Executer 2 action en meme temps [ par HirOinEvOl ]
Bonjour, je souhaite exécuter les deux codes suivant mais simultanément pour qu'ils puissent tournés en parrallèles. Je n'ai trouvé aucun moyen de l
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|