Próbuję napisać program, który Wejścia dodatnią liczbę mniej niż 10 i wysyła sumę liczb pierwszych. Na przykład 5 będzie 5 + 4 + 3 + 2 + 1. Polecenia są Stop obciążenia, Sklep, dodawać, Sum, mnożenie, dzielenie, wejście, wyjście, Oddział Oddział jeśli 0, a jeśli nie oddział 0. Czy ktoś może mi pomóc tutaj. Ja niby zatrzymany. dobrze, co napisałem jest:
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
Dobrze sposób widzę, że działa to załadować pewnej liczby N i dodać kwotę z 0, a następnie zapisać tę sumę jako n + sumy. Następnie załadować n ponownie i odjąć 1 i przechowywać które jako nową sumę. Ale muszę to powtarzać to aż n osiągnie 0. Więc jak mam to zrobić?
Ok, więc to, co trzeba zrobić, to skorzystać z oddziału, jeżeli 0 i oddziału, jeżeli nie 0. Myślę, że mam to? więc:
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 = przeznaczona Constant, ale co muszę powtórzyć to odejmowanie i dodawanie przez jedną sumę aż osiągnie 0. n Oddział jeśli nie zero BRGT i oddziału, jeżeli jest zerowy i oddział jest BZ BR LD jest obciążenie. Wiem, co muszę powtórzyć, ale nie wiem jak to zrobić w asemblerze.













