Problème en assembleur.

Fermé
zeustein Messages postés 9 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 10 avril 2008 - 7 avril 2008 à 23:49
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 10 avril 2008 à 19:30
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 '.

3 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
8 avril 2008 à 02:56
Salut,

Tu as déjà une piste, ya un truc spécifique que tu arrives pas à faire?
0
zeustein Messages postés 9 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 10 avril 2008
8 avril 2008 à 14:10
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
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527 > zeustein Messages postés 9 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 10 avril 2008
8 avril 2008 à 20:22
Si tu veux on peux essayer de le faire ensemble, tu as déjà essayé de faire quelque chose?
0
zeustein Messages postés 9 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 10 avril 2008 > kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016
9 avril 2008 à 20:07
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
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527 > kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016
9 avril 2008 à 20:15
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
zeustein Messages postés 9 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 10 avril 2008 > kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016
9 avril 2008 à 21:20
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
zeustein Messages postés 9 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 10 avril 2008
10 avril 2008 à 18:09
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
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
10 avril 2008 à 18:57
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
zeustein Messages postés 9 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 10 avril 2008 > kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016
10 avril 2008 à 19:20
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
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527 > zeustein Messages postés 9 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 10 avril 2008
10 avril 2008 à 19:30
Je vais regarder :-)
Et oublie pas mon message d'en dessous qui explique ce qu'il faut faire pour ton deuxième exercice :-)
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
10 avril 2008 à 19:09
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