Programme assembleur

Résolu/Fermé
back me up Messages postés 11 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 26 avril 2007 - 28 mars 2007 à 22:36
 aminovytch - 15 févr. 2008 à 18:12
hi!
je n'arrive pas à comprendre l'exercice suivant:
nous avons 4 nombres entiers en méroire U,V,Y et T.si la somme de 2 de ces4 nombres est egale à la somme des 2 autres on effectera cette somme à chacune des4 variables sinon on leur affectera 0.on vous demande d'ecrire le programme assembleur qui realise ce travail.
merci infinement

8 réponses

ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
29 mars 2007 à 00:51
Salut,

Bon je pense que ça doit marcher.

;Pour back me up

;data
U: 	ds	8
V:	ds	8
Y:	ds	8
T:	ds	8

;code
start:		nop
init:           lxi h,U
		mvi m,15h
		lxi h,V
		mvi m,18h
		lxi h,Y
		mvi m,3h
		lxi h,T
		mvi m,6h
load:		lda U
		mov b,a	;U->B
		lda V
		mov c,a	;V->C
		lda Y
		mov d,a	;Y->D
		lda T
		mov e,a	;T->E
total:		add b
		add c
		add d	;Total->A
division:	ora a	;0->Carry
		rar 	;Total/2->Total
		jc pasegaux	;Impair
test:		mov h,a	;Total/2->H
		mov a,c
		add b
		cmp h
		jz egaux ;Si U+V=Total/2
		mov a,d
		add b
		cmp h
		jz egaux ;Si U+Y=Total/2
		mov a,e
		add b
		cmp h
		jz egaux ;Si U+T=Total/2
pasegaux:	mvi a,0h
		sta U
		sta V
		sta Y
		sta T
		jmp halt
egaux:		mov a,b
		add h
		mov b,a ;U+=Total/2
		mov a,c
		add h
		mov c,a	;V+=Total/2
		mov a,d
		add h
		mov d,a ;Y+=Total/2
		mov a,e
		add h	;T+total/2->A
		sta T
		mov a,b
		sta U
		mov a,c	
		sta V
		mov d,a
		sta Y
halt:		hlt
2
back me up Messages postés 11 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 26 avril 2007
29 mars 2007 à 17:24
merci beaucoup!
mais je suis désolée,j'ai rien compris
je suis seulement une etudiante de 1 ere année ,je trouve votre solution tres difficile,est-ce que vous pouvez utiliser un peu de facilité,i'll be very thankfull
merci beaucoup:-D
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
29 mars 2007 à 17:30
Bonjour,

Je ne sais pas trop comment t'expliquer c'est de l'assembleur aussi... Je peux te détailler mon algo si tu veux.

On additionne les 4 nombres et on stocke cela dans total.
On divise total par 2. (Si total impair, pas la peine de continuer)
Sinon on prend un des quatre nombres et on teste si en additionnant un des 3 autres on arrive à ce total/2.
Si oui, alors la somme des deux autres nombres fait aussi total/2.

Après, en complément de cette description, il y a les commentaires dans le code. Si malgrès ça tu n'arrives pas à comprendre, je te conseille de réviser les opérateurs (cf doc) et faire des exos plus faciles.

Je suis moi-même débutant en première année d'école d'ingé, et je t'avoue que ce n'est pas évident !

Salut
0
back me up Messages postés 11 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 26 avril 2007 > ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014
29 mars 2007 à 18:18
hi!
mais regardez notre prof comment il l'as expliqué:
nous avons u,v,y et t
si u+v=y+t
par exemple:
U=2,v=3,y=1et t=4
donc 5=5
on met la valeur 5 ds chacune de ces variables sinon on met 0
LDA U
ADD V
STA Z
LDA Y
ADD Z
STA W
SI Z=W (je sais si on peut ecrire comme ça en assembleur?)
et je sais pas apres comme je dois faire
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342 > ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014
29 mars 2007 à 18:39
Oui c'est bien ca que j'ai compris. Mon programme implémente ça normalement. Regarde les étiquettes pour décomposer l'algo.

ADD V
ADD Z

n'existe pas

SI Z=W (je sais si on peut ecrire comme ça en assembleur?)
Il faut d'abord stocker les valeurs dans les registres dont une dans l'accu.
Et faire
CMP B (si registre B)
JZ label (saut conditionel)

Mais bon, vu les erreurs, regarde le cours d'abord !
0
vous pouvez m'aider j'ai un exercice je sais comment je vais le resoudre
ex:donner l'algorithme et le programme assembleur qui permet de faire la somme de deux nombres naturels 16 bits.utiliser une procédure <somme> qui: -lit les deux opérandes sur la pile sans les dépiler ni modifier le sommet de la pile.
-calcule la somme de ces deux opérandes.
-stocke le résultat dans le registre AX
merci d'avance
2
A l'aide
j'ai besoin d'un prog en assembleur qui fait la somme de deux nbres entres au clavier
il doit pouvoir tester si ces entrees sont des chiffres ou des lettres
Ce que j'ai pu faire se resume a cela
debug a100
mov AX, 4
mov Bx,5
AddAX,BX
movDX,AX
(enter)
(enter)
nope
(enter)

Pour le compiler on fait
t enter(4fois)
cela ne resout pas la question du test...
1
saifoune1000 Messages postés 1 Date d'inscription vendredi 26 octobre 2007 Statut Membre Dernière intervention 26 octobre 2007 1
26 oct. 2007 à 19:05
slt svp y' a pas une solution pour ce petit prob: un prog assembleur qui permet la lecture d' une chaine d caractérepuis l'inversion de ctte chaine en éffectuant l'opération ""miroir"" cad le dernier caractére devient le premier, et l'avant dernier le secondet ainsi de suite, puis l'affichage du résultat sur l'écran....et merci
1

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

Posez votre question
comment utiliser les registre
toujours mon probleme est j'ai bien resolu une telle probleme mais je ne sais comment organiser les instructions
ce sont mes seuls problemes en programmation assembleur
et merci d'avance
1
je voudré aoir laplication ou bien le programme assembleur A86 pr commencé mes exercices
merci
1
assembleur
1
QUELLE EST LA DIFFERENCE ENTRE UN ASSEMBLEUR,COMPILATEUR,interpretateur?MERCI
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
6 sept. 2007 à 09:28
Bonjour

On évite les majuscules et puis on ne met pas "répondre" lorsque l'on ne propose pas une réponse au problème initial.
Merci
0