Nombre premier en nasm [Résolu]

YAWLY 4 Messages postés samedi 25 avril 2009Date d'inscription 11 juillet 2011 Dernière intervention - 26 juin 2010 à 00:46 - Dernière réponse : cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention
- 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
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 26 juin 2010 à 22:31
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

Merci cs_ghuysmans99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de cs_ghuysmans99
cs_patatalo 1466 Messages postés vendredi 2 janvier 2004Date d'inscription 14 février 2014 Dernière intervention - 26 juin 2010 à 02:14
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
cs_patatalo 1466 Messages postés vendredi 2 janvier 2004Date d'inscription 14 février 2014 Dernière intervention - 27 juin 2010 à 02:47
Commenter la réponse de cs_patatalo
YAWLY 4 Messages postés samedi 25 avril 2009Date d'inscription 11 juillet 2011 Dernière intervention - 14 juil. 2010 à 03:20
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
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 14 juil. 2010 à 21:48
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
YAWLY 4 Messages postés samedi 25 avril 2009Date d'inscription 11 juillet 2011 Dernière intervention - 15 juil. 2010 à 01:59
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
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 15 juil. 2010 à 15:27
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.