Problème en assembleur.

zeustein Messages postés 9 Statut Membre -  
kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, chers internautes
s'il vous plait j'ai un problème en fait j'ai un tp ki me fracasse.
il s'agit d'un examen à remettre avant vendredi.

soit le programme assembleur ci dessous.

include emu8086.inc
name "som" ; outpu the file name ( max 8 chars for DOS compatibility )
; add your code here
vecteur db 5,4,5,2,1
m db 0
mov ax,0
mov ax,0
mov bl,0
re:
add al, vecteur[bx]
inc bl
cmp bx,5
jne re
print ' La Somme Est: '
call print_num
div bl
mov dx,ax
mov ax,0
mov al,dl
print ' La Moyenne Est: '
call_print_num
define_scan_num
define_print_num
define_print_num_uns
define_print_string
define_pthis.

ce programme calcule la somme et la moyenne des éléments du tableau ' vecteur '.

il est question de s'inspirer de ce programme ( surtout des accès aux éléments du vecteur ) pour ECRIRE UN PROGRAMME QUI TRIE PLUTOT LE VECTEUR DANS L'ORDRE CROISSANT.
et d'ECRIRE UN AUTRE PROGRAMMA QUI LIT UNE VALEUR ET VERIFIE S'IL EST DANS LE TABLEAU ' VECTEUR '.
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Salut,

    Tu as déjà une piste, ya un truc spécifique que tu arrives pas à faire?
    0
    1. zeustein Messages postés 9 Statut Membre
       
      bonjour kilian et je te remercie surtout de m'avoir repondu c'est tres gentil.

      en fait il est question de s'inspirer de ce programme ( surtout des accès aux éléments du vecteur ) pour ECRIRE UN PROGRAMME QUI TRIE PLUTOT LE VECTEUR DANS L'ORDRE CROISSANT.
      et d'ECRIRE UN AUTRE PROGRAMME QUI LIT UNE VALEUR ET VERIFIE S'IL EST DANS LE TABLEAU ' VECTEUR '.

      s'il te plait j'aimerai ke tu me donne les codes sources pour pouvoir resoudre ce problème.c'est un projet que je dois remettre vendredi matin.merci de ton soutien
      0
    2. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526 > zeustein Messages postés 9 Statut Membre
       
      Si tu veux on peux essayer de le faire ensemble, tu as déjà essayé de faire quelque chose?
      0
    3. zeustein Messages postés 9 Statut Membre > kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention  
       
      wi j'ai essayé avec le tri mais ca ne marche.j'ai pas le code source présentement avec moi parceque je suis pas chez moi mais je ferai l'effort de rentrer le chercher et de te le parvenir vu l'approche du delai ( je dois soumettre ce devoir pour vendredi le 11).
      j'aimerai donc stp que tu essais de corriger le code source que je t'enverrai en m'envoyant les codes sources du problème tel que tu le concois.
      merci et à tout à l'heure.
      meri bcp d'avance.
      0
    4. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526 > kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Ca marche. Au pire si je suis pas là ce soir, je suis là demain dans l'aprem.
      Et si tu mets ton code, mets le sur cette discussion et pas par message privée ;-)

      A bientôt!
      0
    5. zeustein Messages postés 9 Statut Membre > kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Je suis allé et je suis deja là j'ai lu le message que t'as laissé je vais fair l'effort de redifuser le meme message dans le salon. voici donc le cod source:que j'ai fait.


      include emu8086.inc
      name "trivec"
      vecteur db 5,4,5,2,1
      i dw 0
      j dw ?
      m db ?
      mov ax,0
      mov bx,0
      mov dx,0
      rep1:
      cmp bx,4
      je conclusion
      mov dl,vecteur[bx]
      mov j,bx
      rep2:
      cmp bx,5
      je fpour
      cmp vecteur[bx],dl
      jl faire
      jmp finsi
      faire:
      mov dl,vecteur[bx]
      mov i,bx
      finsi:
      inc bx
      jmp rep2
      fpour:
      mov bx,j
      cmp i,0
      jne do
      inc bx
      jmp rep1
      do:
      mov j,bx
      mov bx,i
      mov cl,vecteur[bx]
      mov bx,j
      mov cl,vecteur[bx]
      mov bx,i
      mov vecteur[bx],cl
      mov bx,j
      mov vecteur[bx],dl
      inc bx
      jmp rep1
      conclusion:
      mov bx,0
      print 'le resutat est:'
      rem:
      cmp bx,5
      je fin
      mov al,vecteur[bx]
      call print_num
      inc bx
      jmp rem
      fin:
      define_scan_num
      define_print_num
      define_print_num_uns
      define_print_string
      define_pthis
      end



      et la deuxième ^préoccupation consiste à ECRIRE UN AUTRE PROGRAMME QUI LIT UNE VALEUR ET VERIFIE S'IL EST DANS LE TABLEAU ' VECTEUR '


      Merci bcp pour toute l'assistance que tu m'apporte. bonne soirée!
      0
  2. zeustein Messages postés 9 Statut Membre
     
    ok merci je vais essayé. je craint que ca marche pas parceque j'utilise l'emul 8086. qu'à celà ne tienne peut tu quand meme m'envoyer le ode source?? pour resoudre ce dernier problème. je suis à J-1.
    merci et à tres bientot.
    0
    1. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
       
      Bon j'ai vaguement transformé ton code pour marche avec nasm.
      J'ai programmé la fonction print_num, j'ai parfois utilisé les registres en 32 bits au lieu de 16, sinon ça posait des problèmes d'adressages. Mais le fond n'a pas beaucoup changé:
      extern printf
      
      
      section .data
      	
      	vecteur db 5,4,5,2,1
      	f db '%02x',0xa,0x0
      section .bss
      	j resd 1
      	i resd 1
      	m resd 1
      
      section .text
      	global main
      
      main:
      		mov ax,0
      		mov ebx,0
      		mov dx,0
      		mov [i], dword 0
      	rep1:
      		cmp bx,4
      		je near conclusion
      		mov dl,[vecteur + ebx]
      		mov [j],bx
      	rep2:
      		cmp bx,5
      		je fpour
      		cmp [vecteur + ebx],dl
      		jl faire
      		jmp finsi
      	faire:
      		mov dl,[vecteur + ebx]
      		mov [i],bx
      	finsi:
      		inc bx
      		jmp rep2
      	fpour:
      		mov bx,[j]
      		cmp [i], byte 0
      		jne do
      		inc bx
      		jmp rep1
      	do:
      		mov [j],bx
      		mov bx,[i]
      		mov cl,[vecteur + ebx]
      		mov bx,[j]
      		mov cl,[vecteur + ebx]
      		mov bx,[i]
      		mov [vecteur + ebx],cl
      		mov bx,[j]
      		mov [vecteur + ebx],dl
      		inc bx
      		jmp rep1
      	conclusion:
      		mov bx,0
      	rem:
      		cmp bx,5
      		je fin
      		mov al,[vecteur + ebx]
      		call print_num
      		inc bx
      		jmp rem
      fin: 
      		ret
      
      print_num:
      		pushad
      		movzx eax, al
      		push eax
      		push f
      		call printf
      		add esp, 8
      		popad
      		ret
      
      
      		
      0
      1. zeustein Messages postés 9 Statut Membre > kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention  
         
        merci etant donné que je suis pas à la mailson presentement, je testerai ca des que je serai rentrer et je vais me debrouiller à adapter avec emu8086.
        meri pour tout. bonne soirée.
        j'ai deposé d'autres requetes afin de savoir comment creer une interface graphique en c++.
        stp peut tu m'aider à ce sujet??
        0
      2. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526 > zeustein Messages postés 9 Statut Membre
         
        Je vais regarder :-)
        Et oublie pas mon message d'en dessous qui explique ce qu'il faut faire pour ton deuxième exercice :-)
        0
  3. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Et si tu cherches comment trouver un caractère dans un tableau, tu peux regarder ça (bon c'est prévu pour nasm mais bon...):
    http://www.commentcamarche.net/faq/sujet 10330 exercice assembleur x86 occurence d un caractere
    0