[ASM] Différence entre deux compilateurs

Bonjour tout le monde,

J’ai créé un petit programme en assembleur pour calculer les nombres premier (mon premier :smiley: ). J’ai choisi d’utiliser NASM comme compilateur (il me paraît plus simple et n’est pas fait par Billou :paf: ).

Quand je place (juste la partie du “vrai” code de mon programme) dans VC++.net ou VC++6 je récupère bien les nombres premiers mais quand je place tout le code dans NASM il me met une erreur à l’écran de ce type “Dépassement de division”…

Alors voici mon programme (j’espère que je l’ai bien commenté):

[BITS 32]
[ORG 0x0100]


[SECTION .data]
NombMaxi EQU 80000

[SECTION .text]


; Initialisation tous les registres à 0
	XOR EAX, EAX
	XOR EBX, EBX
	XOR ECX, ECX
	XOR EDX, EDX

;Initialise le premier nb à scanner
	MOV ECX, 1

	SuiteScan:

	;Incrémentation le nombre à scanner
  INC ECX
	;Copiage du nombre à analyser dans EBX
  MOV EBX, ECX
  
  SuiteDuScan:

  ;Enregistrement de test de la division (oublie le nb à tester)
  	MOV EAX, ECX
  ;Essaye de diviser le nombre par un nombre un peu plus petit
  	DEC EBX

  ;Test si le diviseur (dans EBX) contient un nombre plus grand que 1
  	CMP EBX, 2
  	JL IsAPrem

  ;Effectue la division
  	XOR EDX, EDX
  	DIV EBX

  ;Test si un reste existe (dans EDX)
  	CMP EDX, 0
  ;Si aucun reste existe alors on passe au prochain diviseur
  	JE ProchNb

  ;Test si le diviseur (dans EBX) contient un nombre plus grand que 1
  	CMP EBX, 2
  	JL IsAPrem

  ;Passe au prochain diviseur  	
  	JMP SuiteDuScan

  	IsAPrem:
  ;Doit montrer le nb premier à l'écran
  	
  ;Passe au prochain nombre ( /!\et pas au prochain diviseur /!\)	
  	JMP ProchNb

	;Label utilisé pour vérifier si on a testé le dernier nombre et sinon
	;passer au prochain nombre
  ProchNb:

	;Test si le dernier nombre a été atteint  
  CMP ECX, NombMaxi
  JE Fin
  JMP SuiteScan

;Fin du programme
	Fin:
ret

Es-ce-que qqun a une explication de cet erreur sous NASM?

Si quelqu’un saurait aussi ou trouver un décompilateur qui marche pour ce type de programme… J’ai réussi avec OllyDbg et IDA Pro à décompiler des programmes tell que explorer.exe (avec du code plus ou moins lisible) mais quand je veux décompiler mon programme, dans les deux cas les décompilateurs me mettent une erreur… Mon programme est si spécial que ça?

mais dans les deux cas ces décompil

Arg… personne répond…
bon ben je crois que je vais passer à MASM…
dommage je voulais pour une fois programmer en "libre" :sarcastic:

Faut dire aussi que l’assembleur c’est pas non plus le truc le plus utilisé pour programmer… tu as VisualC++ tu peux bien programmer ça en C ? :slight_smile: