Am încercat să scrie un program care intrările un număr pozitiv mai mic de 10 și ieșirile suma primelor numere. De exemplu, 5 ar fi 5 + 4 + 3 + 2 + 1. Comenzile sunt Stop, Load, Store, Add, Sum, Înmulțire, Împărțire, intrare, ieșire, Branch, Sucursala dacă este 0, iar ramura dacă nu 0. Poate cineva să mă ajute aici. Sunt un fel de blocat. bine ceea ce am scris este:
IN n
LD n
ADD sum
STO sum
LD n
SUB one
ADD sum
STO sum
BRGT haw
LD n
BR done
haw: OUT sum
done: STOP
DC n 4
DC sum 0
DC one 1
Ei bine, modul în care am vedea de lucru este să încărcați unele numărul n și se adaugă o sumă de 0 și apoi stoca această sumă ca n + suma. Apoi, încărcați din nou și n scade 1 și stoca ca noua sumă. Dar am nevoie de ea pentru a repeta acest lucru până când n-ajunge la 0. Deci, cum fac asta?
Ok deci ce trebuie să faceți este să utilizați ramura dacă 0 și ramura dacă nu 0. Cred că am avea? asa de:
IN n
LD n
ADD sum
STO sum
BR CAW
CAW: LD n
SUB ONE
STO n
BRGT HAW
BZ TAW
HAW: ADD SUM
STO SUM
BR CAW
TAW: OUT SUM
DC SUM 0
DC ONE 1
DC = Desemnat Constant, dar ceea ce am nevoie să repet este scăderea de către unul și adăugarea sumei până când n-ajunge la 0. Sucursala dacă nu zero, este BRGT și ramură în cazul în care este zero, BZ și ramură este BR, LD este de încărcare. Știu ce am nevoie să repet, dar nu știu cum să faceți acest lucru într-un limbaj de asamblare.













