Nombre premier en nasm [Résolu]

Messages postés
4
Date d'inscription
samedi 25 avril 2009
Dernière intervention
11 juillet 2011
- - Dernière réponse : cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
- 15 juil. 2010 à 15:27
MED.MERZOUG
salut tout le monde
vous pouvez m'aider
si j le compile sa affiche chaque fois le nbr est non premeir
<<le programme permet de lire un entier et affiche s'il est un nbr premier ou non>>
le code est :
Section .date
chaine1 dw 'veulliez saisir un entier ',0xA,0xA
long1 equ $-chaine1

chaine2 dw 'premier ',0xA
long2 equ $-chaine2
chaine3 dw'no premier',0xA
long3 equ $-chaine3

Section .bss

x resb 3
Section .text

global _start

_start :

mov eax, 4
mov ebx, 1
mov ecx, chaine1
mov edx, long1
int 80h

mov eax, 3
mov ebx, 0
mov ecx, x
mov edx, 2
int 80h

mov eax,[x]
cmp eax,3
jbe premier
mov ebx,eax
sub ebx,2

division:
cmp ebx,1
JE premier

push eax
mov edx,0
div ebx
pop eax
cmp edx,0
JE no_prem
dec ebx
JMP division

premier:
mov eax, 4
mov ebx, 1
mov ecx, chaine2
mov edx, long2
int 80h

no_prem:
mov eax,4
mov ebx,1
mov ecx,chaine3
mov edx,long3
int 80h

mov eax, 1
mov ebx, 0
int 80h
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
3
Merci
@patatalo :

Si t'as pas envie de trop te fatiguer il te suffit de faire (ou prendre) un code en assembleur, le compiler et regarder ce que ça donne ... Et c'est pas plus honnête que de demander sur un forum de faire son devoir.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_ghuysmans99
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Dernière intervention
14 février 2014
0
Merci
salut,


commente ton prog car si tu crois qu'on va s'amuser à traduire les syscalls pour ta pomme, tu te gourres.

@++
Commenter la réponse de cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Dernière intervention
14 février 2014
Commenter la réponse de cs_patatalo
Messages postés
4
Date d'inscription
samedi 25 avril 2009
Dernière intervention
11 juillet 2011
0
Merci
MED.MERZOUG

Salut tout le monde j'ai besoin de votre aide mon programme ne marche pas toujours
je demande l'aide sur un programme pour effectuer toutes les operations addition mulip ,soustrac ,division
Commenter la réponse de YAWLY
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
0
Merci
Compile ça et modifie le code pour que ça ressemble à un truc que t'as fait toi-même (là c'est un des trucs que j'ai posté un type qui avait au moins fait un effort ) :
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

void calculette()
{
int n1, n2, res;
char op;

system("cls");
printf("Calculatrice simplifiee\nPar ghuysmans99 (CodeS-SourceS), 2010.\n\n");
printf("Premier nombre  : "); scanf("%d",&n1);
printf("Deuxieme nombre : "); scanf("%d",&n2);
do
{
printf("Operateur +-*/  : ");
fflush(stdin); scanf("%c",&op);
} while (op!='+' && op!='-' && op!='*' && op!='/');
puts("");

switch(op)
{
case '+': res=n1+n2; break;
case '-': res=n1-n2; break;
case '*': res=n1*n2; break;
case '/': res=n1/n2; break;
}
printf("%d%c%d=%d\n\n",n1,op,n2,res);
}

int main(int argc, char* argv[])
{
char continuer;

do
{
calculette();
printf("Tapez 'x' pour quitter ... "); fflush(stdin); scanf("%c",&continuer);
} while (continuer!='x');

return 0;
}


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99
Messages postés
4
Date d'inscription
samedi 25 avril 2009
Dernière intervention
11 juillet 2011
0
Merci
MED.MERZOUG
Salut ça peut marcher en c .j'aimerai savoir comment ça peut marcher en nasm (assembleur ) si vous pourriez me montrer comment je pourrai faire un programme en utilisant le code c en assembleur avec nasm .

je faisais tenter de realiser un programme assembleur qui lit deux entier saisis par clavier et affiche leur somme .
le code est:
extern printf
global main
segment .data
;value1 dd 1h
;value2 dd 2h
chaine1 dw 'veulliez saisir un entier1 ',0xA,0xA
long1 equ $-chaine1
chaine2 dw 'veulliez saisir un entier 2',0xA,0xA
long2 equ $-chaine2
format_d db '%d', 10, 0
Section .bss

x1 resb 8
x2 resb 8




section .text

main:


mov eax, 4
mov ebx, 1
mov ecx, chaine1
mov edx, long1
int 80h

mov eax, 3
mov ebx, 0
mov ecx, x1
mov edx, 2
int 80h
mov eax, 4
mov ebx, 1
mov ecx, chaine2
mov edx, long2
int 80h

mov eax, 3
mov ebx, 0
mov ecx, x2
mov edx, 2
int 80h

mov EAX, [x1]
add EAX, [x2]
push EAX
push format_d
call printf
pop EAX
pop eax

ret

quant je le compile et je fais saisir par exemple 4 et 1 ,il affiche 5221
aussi de mem si : 2 et 5 il affiche 5223

je suis debutant en assembleur jne connais pas becou
Commenter la réponse de YAWLY
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
0
Merci
Compile avec GCC, décompile avec NDISASM qui est fourni normalement avec NASM.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.