Nombre premier en nasm

Résolu
YAWLY Messages postés 4 Date d'inscription samedi 25 avril 2009 Statut Membre Dernière intervention 11 juillet 2011 - 26 juin 2010 à 00:46
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre 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

7 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
26 juin 2010 à 22:31
@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
3
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
26 juin 2010 à 02:14
salut,


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

@++
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
27 juin 2010 à 02:47
0
YAWLY Messages postés 4 Date d'inscription samedi 25 avril 2009 Statut Membre Dernière intervention 11 juillet 2011
14 juil. 2010 à 03:20
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
14 juil. 2010 à 21:48
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
0
YAWLY Messages postés 4 Date d'inscription samedi 25 avril 2009 Statut Membre Dernière intervention 11 juillet 2011
15 juil. 2010 à 01:59
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
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
15 juil. 2010 à 15:27
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
0
Rejoignez-nous