Programme assembleur

Résolu
back me up Messages postés 11 Statut Membre -  
 aminovytch -
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 1873 Statut Membre 342
 
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 Statut Membre
 
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 1873 Statut Membre 342
 
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 Statut Membre > ekra Messages postés 1873 Statut Membre
 
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 1873 Statut Membre 342 > ekra Messages postés 1873 Statut Membre
 
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
bella
 
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
jane
 
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 Statut Membre 1
 
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
dorra
 
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
achmio
 
je voudré aoir laplication ou bien le programme assembleur A86 pr commencé mes exercices
merci
1
aminovytch
 
assembleur
1
moh1959
 
QUELLE EST LA DIFFERENCE ENTRE UN ASSEMBLEUR,COMPILATEUR,interpretateur?MERCI
0
ekra Messages postés 1873 Statut Membre 342
 
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