Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : nasm,nasm,nasm [ Archives / Autres asm ] (qsdfgh)

mardi 28 mars 2006 à 18:00:42 | nasm,nasm,nasm

qsdfgh



voula je veux faire une fonction en asm avec nasm (vous l'auriez deviné ) qui affiche une chaine de caracteres a partie d'une fonction qui affiche un registre :

SECTION .data

          ; variables du programme

    x: TIMES N dd 0
    y: TIMES N dd 0
    z: TIMES N*4 dd 0
    bonjour_ db 'bonjour',0 ; le zero indique la fin

SECTION .text

main:



        Mov bx,bonjour
        call cout_msg

cout_msg:      
        Mov eax,[bx]
         PUSHA
            PUSH  EAX
            CALL  afficherUns32 ;affiche eax
            POP   EAX
            POPA
        inc bx
        cmp [bx],word 0
        jne cout_msg
        ret



mercredi 29 mars 2006 à 08:45:00 | Re : nasm,nasm,nasm

Nasman

Bonjour qsdfgh,

Ta question n'est pas très claire, veux tu savoir quoi mettre dans la fonction afficherUns32 ou bien la fonction afficherUns32 existe déjà et tu veux l'utiliser pour afficher une chaine de caractères ?

Je pense également que le code que tu as mis comporte quelques coquilles comme:

bonjour_ db 'bonjour',0 ; le zero indique la fin (je suppose que c'est bonjour: db ...)

Pourquoi utilises-tu le registre 16 bits bx.

Enfin je ne sais pas ce qu'il y a dans la routine afficherUns32, affiche-t-elle un ou plusieurs caractères à la fois (pour les 4 octets de eax) ? Dans ce cas l'incrémentation de 1 de bx décale la lecture de ta chaine de 1 caractère seulement. Tu aurais dans ce cas:

bonjonjonjoujouroururr

A+


jeudi 30 mars 2006 à 08:48:32 | Re : nasm,nasm,nasm

qsdfgh

cette fonction affiche le code ascii qui est dans eax
je ne sais pas comment elle fonctionnne et je veux l'utiliser pour
afficher une chaine de caracterese enmetant l'addresse de cette chaine dans bx ou ebx , mais nasm me dit q'il y a une faute


jeudi 30 mars 2006 à 09:58:00 | Re : nasm,nasm,nasm

Nasman

Réponse acceptée !

Bonjour qsdfgh,

Voici une routine qui convertit un octet mis dans al en deux caractères mis dans ax


hexascii: ;convertit la valeur mise dans al en 2 octets al et ah (al=poids fort, ah=poids faible)

  aam 16   ;décompose en deux octets ah (division par 16) et al (reste division)
     ;peut être remplacé par mov ah,al et shr al,4 si pb (MASM)
  cmp al,0x9  ;vérifie si numérique
  jna num1  ;si <=9
  add al,"A"-"0"-10 ;sinon ajoute 7
num1  xchg ah,al  ;lit les 4 bits de poids fort
  cmp al,0x9
  jna num2
  add al,"A"-"0"-10
num2  add ax,"00"  ;rajoute "0"-0 à chacun des octets
  ret

Si tu veux utiliser ta routine afficherUns32, il faut que tu ne mette qu'un octet dans eax. Il faut utiliser l'instruction
movzx eax,byte[bx]
qui va copier un octet dans eax (en faut dans al et mettre ah et les autres bits du registre à 0)

Si la routine afficherUns32 travaille avec 4 octets (ceux de eax) alors il te faut incrémenter bx de 4.
Une question : dans ce dernier cas que se passera-t-il si le nombre de caractères de ta chaine n'est pas un multiple de 4.

Enfin - et le plus grave - la fonction afficherUns32 doit convertir une valeur hexa comprise entre 00 et FF (pour un octet) en deux caractères, ceci nécessite les opérations suivantes :
- division par 16 pour extraire le nibble haut (bits de 4 à 7) et le nibble bas (bit de 0 à 3)
- pour un résultat compris entre 0 et 9 il faut rajouter 30h pour obtenir les codes ascii compris entre 30h ("0") et 39h ("9")
- pour un résultat compris entre A et F il faut rajouter 37h pour obtenir les codes ascii compris entre 41h ("A") et 46h ("F") ou rajouter 57h pour les minuscules

- sortir la chaine de caractères obtenue

Dans le cas de la sortie d'une chaine déjà toute faite, ta chaine bonjour, ta routine n'est pas du tout adaptée.
Sous Windows, utilise plutôt l'API MessageBox qui t'affichera directement ta chaine

A+




Cette discussion est classé dans : affiche, bx, nasm, times, eax


Répondre à ce message

Sujets en rapport avec ce message

Je comprend pas [ par DeepxThroat ] Salut a tous !j ai decidé de me mettre l asm depuis peu (nivo 0 pr l instant) , g telechargé nasm et nasm ide , et g essayé de compiler des trucs tout NASM en mode protégé [ par webfish ] Salut, Jusqu'à maintenant, j'ai fais de l'assembleur en mode réél avec NASM, et j'aimerais essayer le mode protégé. Comment commencer, Existe-t-il d Aide chaine de caracteres, nasm sous dos [ par Juke ] quelqu'un peut t'il m'aider pour un truc tout con.Comment faire pour demander à l'utilisateur de saisir une chaine, et de lui reafficher ?j'ai des tut problem dans le segment .data (NASM) [ par bouba ] J'ai commencé aujourd'hui la programmation en AssembleurMon premier programme est classique, le "Hello world!".J'utilise NASM sous Linux (Red Hat 7.3, Quel assembleur choisir ? [ par trinitacs ] J'aimerai savoir quel est le meilleur assembleur qui existe ou si il en faut mixer. Je début difficielment l'asm avec NASM. Faut-il choisir MASM, TASM cherche cours win32 sous NASM [ par Nemesis ] Salut,Je cherche des cours de programmations win32 sous NASM (en français si possible), si on pouvait m'envoyer des url ça serait cool... Nemes [NASM] %00 [ par littlefl ] Voilà, je voudrais savoir, sous NASM, ce que fait %00 exactement. On le rencontre dans le fichier C32.MAC livré avec NASM dans le dosier MISC.littlefl [NASM] context stack [ par littlefl ] C'est un bug ou c'est moi ? Parce-que dans la doc de NASM, il est écrit que les defines spécifiques au context stack ont leur nom précédé de %$ et que besoin d'aide [ par assm ] j'ai besoin d'un programme qui simule le fonctionnement d'une calculatrice ça veut dire :l'evaluation de l'expression "12+8*7-2+77"sera la suivante :1 realisation d'une clculette en asm [ par assm ] > j'ai besoin d'un programme qui simule le fonctionnement d'une calculatrice ça veut dire :> l'evaluation de l'expression "12+8*7-2+77"sera la suivant


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,203 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.