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
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
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
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 !