Saisie et affichage de valeur en assembleur
don1design
Messages postés
83
Statut
Membre
-
nicocorico Messages postés 846 Statut Membre -
nicocorico Messages postés 846 Statut Membre -
Bonjour,
je suis un debutant en assembleur
je veux realiser un programme qui arrive a realiser cette equation
Y = 5Xcarre - 2X + 6
pour commencer
jaimerais savoir cmt faire la saise de la valeur X puis la stocker dans AL
puis je compte faire les action suivantes
apres cela jaimerais aussi savoir comment afficer la valeur se trouvant dans le registre AX
merci pour laide que vous maporteriez
je suis un debutant en assembleur
je veux realiser un programme qui arrive a realiser cette equation
Y = 5Xcarre - 2X + 6
pour commencer
jaimerais savoir cmt faire la saise de la valeur X puis la stocker dans AL
puis je compte faire les action suivantes
mov BX, AL ; stocker la valeur de X dans BX mul BX ; multiplier BX par BX mul BX, 5 ; multiplier BX par 6 mov CX, AL ; stocker la valeur de X dans CX mul CX, 2 ; multiplier la valeur de X par 2 et la stocker dans CX sub BX, CX ; soustraire BX par CX add BX, 6 ; additioner BX par 6 mov AX, BX ; placer BX dans AX
apres cela jaimerais aussi savoir comment afficer la valeur se trouvant dans le registre AX
merci pour laide que vous maporteriez
A voir également:
- Saisie et affichage de valeur en assembleur
- Saisie gestuelle iphone - Guide
- Affichage double ecran - Guide
- Saisie vocale whatsapp - Accueil - Messagerie instantanée
- Saisie vocale sms - Guide
- Gboard saisie vocale - Accueil - Applications & Logiciels
5 réponses
Hé bien tout dépend de ton logiciel d'assemblage et de l'environnement sous lequel tu l'exécutes...
Sachant qu'en asm tu ne peux même pas appeler les fonctions bases type Cin, ReadLn des languages évolués, tu peux au pire te servir des fonctions du bios via les interruptions. Mais si ton but c'est d'écrire en asm de manière plus exploitable, je te conseille plutôt d'utiliser un language évolué en soutiens de l'assembleur genre delphi 6.0, que tu peux trouver gratuitement dans google, ou en C mais là je ne sais pas ce qui existe...
De plus ça te permettras de faire de l'asm 32 bits, bcp plus souple et puissant...
Ceci étant dit, quelques remarques :
Sachant qu'en asm tu ne peux même pas appeler les fonctions bases type Cin, ReadLn des languages évolués, tu peux au pire te servir des fonctions du bios via les interruptions. Mais si ton but c'est d'écrire en asm de manière plus exploitable, je te conseille plutôt d'utiliser un language évolué en soutiens de l'assembleur genre delphi 6.0, que tu peux trouver gratuitement dans google, ou en C mais là je ne sais pas ce qui existe...
De plus ça te permettras de faire de l'asm 32 bits, bcp plus souple et puissant...
Ceci étant dit, quelques remarques :
- Le type octet semble un peu court pour faire du calcul au carré...
Tu peux organiser ton code en fonction standard type, avec retour word AX:
Fonction Operation(Valeur : Byte): Word;
- Tu ne peux pas transférer un registre octet vers un mot - Mov BX,AL - Il faut mettre AH à 0 puis Mov BX,AX.
- Mul ne multplie qu'avec AX, donc 'mul BX' égale 'Mul AX,BX'.
Avec une petite réorganisation ça donne :
Fonction Operation(Valeur : Byte): Word; // La valeur passe par AL en standard
asm
Xor AH,AH;
mov BX,AX
mul AX // On multiplie AX par lui-même en conservant BX
Imul AX,05 // Mul ne permet pas de multiplier avec une constante
Add BX,BX // En asm on additionne ou on décale d'1 bit (Shl BX,01) plutôt qu'une multiplication
Sub AX,BX;
Add AX,06;
end; // Le retour de fonction via AX est standard
En asm 32 bits, en préférant ECX à EBX :
Fonction Operation(Valeur : Byte): DWord;
asm
Movzx EAX,AL;
Lea ECX,[EAX*2] // Lea permet de faire des opérations simples
Imul EAX,EAX,5 // On multiplie EAX par lui-même et par 5
Sub EAX,ECX;
Add EAX,06;
end; // Le retour de fonction via EAX est standard
Je pense que emu8086 sera compatible avec win xp, mais ton code ne fonctionnera toujours pas car la moitié des expressions seront illégales pour le compilateur, ce serait bien que tu lises ce que j'ai ecris plus haut...
Le chêne aussi était un gland, avant d'être un chêne
Hé bien tu dois pouvoir utiliser l'interruption 10h pour lire et écrire, mais tout dépend de ce que tu veux faire car si tu veux faire de l'asm dans de bonnes conditions, mieux vaut passer au 32 bits, et comme je te le disais tu peux obtenir delphi 6.0 gratuitement, et il te permet de faire du mode console et de programmer en asm uniquement, ou bien de programmer en mode graphique et d'utiliser toutes les facilitées du language évolué, le tout sans émulateur...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bon je vais devoir
utiliser l'IBM ThinkPad de mon petit frere windows xp 32bits
je peux tjr utiliser eme8086 sur l'IBM ou je dois telecharger ASM?
cette sequence de code
[CODE]mov BX, AL ; stocker la valeur de X dans BX
mul BX ; multiplier BX par BX
mul BX, 5 ; multiplier BX par 6
mov CX, AL ; stocker la valeur de X dans CX
mul CX, 2 ; multiplier la valeur de X par 2 et la stocker dans CX
sub BX, CX ; soustraire BX par CX
add BX, 6 ; additioner BX par 6
mov AX, BX ; placer BX dans AX
[/CODE]
sera telle tjr valabe sur ASM?
quelle est la commande qui me permettera de faire la saisie de la valeur 'X' ?
et celle qui me permettra d'afficher 'Y' ?
utiliser l'IBM ThinkPad de mon petit frere windows xp 32bits
je peux tjr utiliser eme8086 sur l'IBM ou je dois telecharger ASM?
cette sequence de code
[CODE]mov BX, AL ; stocker la valeur de X dans BX
mul BX ; multiplier BX par BX
mul BX, 5 ; multiplier BX par 6
mov CX, AL ; stocker la valeur de X dans CX
mul CX, 2 ; multiplier la valeur de X par 2 et la stocker dans CX
sub BX, CX ; soustraire BX par CX
add BX, 6 ; additioner BX par 6
mov AX, BX ; placer BX dans AX
[/CODE]
sera telle tjr valabe sur ASM?
quelle est la commande qui me permettera de faire la saisie de la valeur 'X' ?
et celle qui me permettra d'afficher 'Y' ?