begin process at 2010 03 16 08:55:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Autres asm

 > 

nasm,nasm,nasm


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

nasm,nasm,nasm

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ée dans : affiche, bx, nasm, times, eax


Répondre à ce message

Sujets en rapport avec ce message

diffrerence entre (e)ax et ax , (e)bx et bx, ... [ par dyroj ] bonjour a tous,je suis en periode d'aprentissage du language assembleur et j'ai une petite quetion consernant le e (extented) devant le nom d'un regis assemblage des instruction [ par yacine000 ] il y a quelqun qui sait résourdre ceexercicel'assemblage des instruction suivantesMOV AX, 200MOV BX , AXMOV SI,BXMOV(SI),BXMOV(0200),BX                en quel langage est ecrit ce programme [ par jedilu ] bonjouren quel language est ecrit ce programme car j'ai un probleme pour le lancermerci00629DE5   AE               SCAS BYTE PTR ES:[EDI]00629DE6   9E pb avec JMP [ par kaka83185 ] salut tous le monde,je reste comme d'habitude,débutant en assembleur,je travaille avec emu8086,et j'essaye de faire un programme qui fait les branchem Recherche de fichier recursif [ par maximus4 ] Bonjour, j'ai la procédure suivante pour la recherche récursive, le résultat est stocké dans un fichier texte. [code=autre]invoke CreateFile,offset fi [NASM avec RadASM] Erreur lors du Link : "File not found: test.res" [ par orax ] Bonjour, j'essaie de débuter la programmation en assembleur, pour cela j'ai installé RadASM et NASM. Le problème est que quand je crée un nouveau proj assembleur [ par calamsro ] j'ai commencé à étudier le langage machine l'assembleur que j'utilise est nasm mais manifestement la plupart des sources asm proposées sont faites pou Affichage décroissant et alphabétique de 2 listes(Nom_Prénom et Note) [ par m_didi9 ] [code=autre]Data SEGMENT Mess1 DB 10,13, 'Entrez la liste des Noms :' DB 10, 13, '$' Mess2 DB 'Entrez la liste des Notes :' DB 10, 13, '$' Mess3 un code en assembleur [ par tatouna ] salut à tous, je suis débutante en asm donc j'ai un problème et je souhaite que vous m'aidiez j'ai une chaine de caractère (une date) et je veut la p 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


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,281 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales