|
Trouver une ressource
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 : déclarations des variables en ASM [ Archives / Newbii ] (over flow)
Informations & options pour cette discussion
dimanche 14 décembre 2003 à 11:11:46 |
déclarations des variables en ASM

over flow
|
Bonjour, J'ai un petit problème. Je dois réaliser un prog qui demande à l'user 4 nb hexa (5C6F) par exemple. Il doit inscrire cela dans DX, donc 5C dans DH et 6F dans DL. 2 problèmes se posent : a) la variable que j'utilise pour stocker mon premier nombre est var1, le deuxième est var2. Cependant, il me dit que mes variables ne sont pas déclarées, pourtant c'est ce que je fais au debut du programme  b) je fais "mov dh,var1" pour mettre le contenu de la var1 dans DH, met je n'y met que mon premier digit entré, j'aimerai également y mettre le deuxième  Mon programme est le suivant : ---------------------------------------------------------------- .MODEL small .STACK .DATA acMsg1 db "Entrer nb hexadecimal a 4 digits : $" acExpression DB 7,?,4 DUP(" ") var1 DB ? var2 DB ? .CODE mov ax,@DATA mov ds,ax ; lecture des digits entrés lea dx,acExpression mov ah,0Ah int 21h ;met les deux premiers digits hexa entres dans DH mov si,2 ; déplace le pointeur sur la case mémoire 2 mov var1,[si] ; prend le contenu de la case pointée par le pointeur et met dans var1 mov si,3 ; déplace le pointeur sur la case mémoire 3 mov var2,[si] ; prend le contenu de la case pointée par le pointeur et met dans var2 mov dh,var1 ; prend le contenu de la variable var1 et l'inscrit dans dh ----------------------------------------------------------------- Merci d'avance ! O.v.E.r.F.l.O.w.
|
|
|
lundi 22 décembre 2003 à 10:26:43 |
Re : déclarations des variables en ASM

hitchhikr
|
Remplace: acExpression DB 7,?,4 DUP(" ") var1 DB ? var2 DB ?
|
Par: ; (5 pour le retour chariot) acExpression db 5,0 acTampon db 5 dup (" ") var1 db 0 var2 db 0 ; Cette table permet de convertir rapidement ; une valeur ASCII hexdécimale en binaire tabhex db 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,0ah,0bh,0ch,0dh,0eh,0fh
|
et: mov si,2 ; déplace le pointeur sur la case mémoire 2 mov var1,[si] ; prend le contenu de la case pointée par le pointeur et met dans var1 mov si,3 ; déplace le pointeur sur la case mémoire 3 mov var2,[si] ; prend le contenu de la case pointée par le pointeur et met dans var2 mov dh,var1 ;
|
par: ; Note: à toi de verifier que l'utilisateur a bien entré des caractères ; valides (de 0 à 9 et de A à F). ; Le principe est assez simple, on doit convertir les données entrées ; par l'utilisateur de l'ascii vers le binaire avant de pouvoir les enregistrer ; dans des variables. lea di,tabhex ; Table de conversion ASCII->Binaire lea si,acTampon xor bx,bx ; On efface bx pour eviter les mauvaises surprises mov bl,[si] sub bl,"0" ; Retranche 030h ("0") pour obtenir un indice dans la table ; Et utilise la table pour obtenir la bonne valeur en binaire ; car "A" n'est pas égal à 0Ah après avoir soustrait "0" mov dh,[di+bx] shl dh,4 ; Décale le chiffre obtenu: 0X -> X0 inc si ; Deuxième chiffre entré mov bl,[si] sub bl,"0" or dh,[di+bx] ; Ajoute 0X mov var1,dh ; Premier nombre convertit
inc si ; On passe au deuxième nombre (Troisième chiffre) mov bl,[si] sub bl,"0" mov dl,[di+bx] shl dl,4 inc si mov bl,[si] sub bl,"0" or dl,[di+bx] mov var2,dl
; Ici , var1/var2 sont déjà dans dh/dl ;mov dh,var1 ;mov dl,var2
|
------- Note: La mode d'adressage "mémoire vers mémoire" n'existe pas avec l'instruction mov (mov var1,[si] / mov var2,[si] est impossible). Note bien que je n'ai pas testé ce code mais je pense qu'il devrait fonctionner :) Le plus important à savoir est qu'il faut convertir les données de l'ascii vers le binaire. Voila, bon courage. f.
|
|
|
lundi 5 janvier 2004 à 02:34:54 |
Re : déclarations des variables en ASM

CoreBreaker
|
Remplace juste: Qui est une instruction qui n'existe pas Par: Car tu dois obligatoirement passer par un registre Core Breaker 
|
|
|
Cette discussion est classé dans : met, mov, var1, var2, dh
Répondre à ce message
Sujets en rapport avec ce message
erreur compilation [ par greg4 ]
je voudrai compiler--------------------------------------.model tiny.dataHelloMessage db 13,10,'Hello World !',13,10,'$'.codeorg 100hstart: mov ax,@d
c/c++ et 19h [ par Xs ]
salut !je travaille sous VC++ et j'aimerais utiliser une interuption processeur : 19hmon code actuel marche mais au lieu d'eteindre le PC, il le fait
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,
Problème d'adresse effective [ par Ihlianov ]
Hi,J'ai un problème avec NASM, qui me rend cinglé.Je code un .Com (16 bits) et il me revoit une erreur sur l'instruction suivante : mov ax, [d
probleme avec l interruption affichage de chaine [ par M0NTOYA ]
bon voila mon probleme ,qd j utilse cette procedure(presentation) pour afficher une chaine de caractere presentation PROC PUSHA MOV AH,09h INT 21h POP
probleme avec l interruption affichage de chaine [ par M0NTOYA ]
bon voila mon probleme ,qd j utilse cette procedure(presentation) pour afficher une chaine de caractere presentation PROC PUSHA MOV AH,09h INT 21h POP
Fonction DLL avec arguments [ par Arnotic ]
Bonjour, J'ai une DLL avec une fonction qui prend 2 arguments (en C (char*, int). Lorsque je la charge j'ai aucun problème mais lors de l'appel à
Simple addition [ par nostra ]
Big totoJe n'arrive pas à afficher les valeurs A (=3) et B(=2) ainsi que le résultat de l'addition. Merci de trouver le ou les erreurs commises.;-----
Addition pourtant simple [ par nostra ]
Big totoJe n'arrive pas à afficher le résultat de l'addition malgré les remarques de Nemesis. Merci de trouver le ou les erreurs commises. ;----------
Mov mem immediat, immediat [ par Erkson ]
Bonjour à tous.J'utilise un Pentium II PC, Windows ME, et un debuggeur qui a un assembleur intégré. Lorsque je veux modifier le programme que je debug
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|