ECRIRE UN TEXTE RAPIDEMENT (NASM) AVEC L'INT 10H

cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 - 16 juil. 2002 à 13:37
zikoasm Messages postés 15 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 25 juin 2005 - 5 sept. 2003 à 23:48
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/15219-ecrire-un-texte-rapidement-nasm-avec-l-int-10h

zikoasm Messages postés 15 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 25 juin 2005
5 sept. 2003 à 23:48
a la fin de ta fonction strLoop il faut ajouter
mov al,00h
mov ah,4ch
int 21h
meme un ret n'est pas suffisant
en plus de cela pour le $ il vaut mieu:
Message db 'Hello world !',10,13,'$'
balgrim Messages postés 52 Date d'inscription vendredi 26 avril 2002 Statut Membre Dernière intervention 28 octobre 2003
8 août 2003 à 03:01
Heu... =) vi c'est pas ske j'ai fait de mieux now que je revoir ça
GeneralDragon Messages postés 4 Date d'inscription samedi 15 mars 2003 Statut Membre Dernière intervention 25 août 2004
7 août 2003 à 20:32
Tu doit pas avoir l'abitude de coder en assembleur man c'est klr
cs_steven007 Messages postés 150 Date d'inscription jeudi 24 janvier 2002 Statut Membre Dernière intervention 27 avril 2007
5 déc. 2002 à 12:45
c vraiment du n'importe quoi ton code, faut revoir ça man
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
4 août 2002 à 18:45
lods[B/W/D] charge dans AL/AX/EAX le Byte/Word/Dword, pointé par SI/ESI et incrémente/décrémente (en fonction du "Direction Flag") SI/ESI de 1/2/4 octets.

stos[B/W/D] place à l'adresse pointée par DI/EDI, le Byte/Word/Dword contenu dans AL/AX/EAX et incrémente/décrémente (en fonction du "Direction Flag") DI/EDI de 1/2/4 octets.
balgrim Messages postés 52 Date d'inscription vendredi 26 avril 2002 Statut Membre Dernière intervention 28 octobre 2003
2 août 2002 à 16:22
personnelement, je m'y connais peu en asm, et lodsX et stosX je sais pas a coi sa sert :-
sinon pour deadlock: dsl, c vrai que je m'embrouille avec fonction, interrutpion... 8-|
sinon, c koi la difference entre mettre pop bx avant ou apres?
voila, merci pour tous vos commantaires
balgrim Messages postés 52 Date d'inscription vendredi 26 avril 2002 Statut Membre Dernière intervention 28 octobre 2003
2 août 2002 à 16:22
personnelement, je m'y connais peu en asm, et lodsX et stosX je sais pas a coi sa sert :-
sinon pour deadlock: dsl, c vrai que je m'embrouille avec fonction, interrutpion... 8-|
sinon, c koi la difference entre mettre pop bx avant ou apres?
voila, merci pour tous vos commantaires
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
2 août 2002 à 14:51
Aucune idée mais lodsX et stosX restent bien pratique
DeadLock Messages postés 1 Date d'inscription vendredi 2 août 2002 Statut Membre Dernière intervention 2 août 2002
2 août 2002 à 11:52
Quelques commentaires (plus ou moins pointilleux):
. pourquoi as-tu garder le 13,10 (pour passer a la ligne pour l'int DOS). Tu peux a la rigueur le rajouter dans le code pour passer a la ligne

. 10h = interuption video du bios (pas fonction, c'est 0Eh la fonction)

. il manque pas un ret a la fin ?

. perso j'aurai mis le "pop bx", juste avant et non apres) la comparaison

. pour Kaid, il me semble que maintenant (sur les proc actuels), il vaut mieux utiliser les mov plutot que lodsx/stosx sauf pour les rep (parce que notament, il faut se souvenir de l'etat du flag d (direction), le mettre a 0 (cld) pour incrementer si, puis le restaurer.
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
16 juil. 2002 à 13:37
Si tu veux utiliser le caractères '$', tu n'as qu'à prendre le 0 comme caractère de fin de chaine, comme en C.

Et ensuite tu peux optimiser le code comme ca:

mov si, Message
mov bx, 1
call strLoop

; -----

strLoop:

lodsb

or al, al
jz strLoop_end

push bx

mov ah, 0eh
int 10h

pop bx

jmp strLoop

strLoop_end:

ret
Rejoignez-nous