Wie kann ich mehrere Zahlen addieren im MOPS Modellrechner?!?


12.06.2020, 00:14

So sieht mein Programm bisher aus

1 Antwort

Also "beliebig viele" wird nicht gehen, da du nur eine begrenzte Zahl an Registern hast.(Bzw. an sich kann man das auch über das Eingaberegister regeln, so wie ich es in meinem Beispiel unten gemacht habe. Damit das programm terminiert sollte man aber schon angeben, wie viele Zahlen addiert werden. Theoretisch kannst du aber auch eine unendliche Schleife verwenden und damit erlauben, unendlich viele Zahlen zu addieren)

; Zähler initialisieren
ld 0
st h
; Anzahl an Zahlen in g speichern
ld 8
st g
; Ergebnis auf 0 setzen. Steht in f
ld 0
st f
; Addieren
; Prüfen, ob Anzahl erreicht
ld h
cmp g
; Wenn ja, springe in den loop
jlt loop
; Ansonsten springe zum ende des loops
jmp end
; Addiere naechste Zahl zum akkumulator
ld f:loop
in f
add f
; Erhoehe Zaehler
st f
ld h
add 1
st h
; Prüfung von oben nocheinmal hier unten, da sonst ein weiteres jump noetig waere und das ineffizient waere.
; Prüfen, ob Anzahl erreicht
ld h
cmp g
; Wenn ja, springe in den loop
jlt loop
; Ende des programms. Ergebnis steht im Akkumulator
end :end
Anonym187213 
Fragesteller
 12.06.2020, 09:44

ja stimmt es können ja nicht beliebig viele Zahlen addiert werden aber es ging mir darum dass mehrere Zahlen addiert werden können.

danke für deine Antwort ich schaue mir das nochmal genauer an

1
Destranix  12.06.2020, 13:30
@Anonym187213

Das Ergebnis steht übrigens am ende nicht im Akkumulator, wie ich schreibe, sondern in f.

1