MOPS

Status
Für weitere Antworten geschlossen.

trauma_iwnl_

Mitglied
15 Nov. 2015
389
1.329
980
24
Karlsruhe
www.youtube.com
Hallo Leute,
ich sitze grade seit über einer Stunde daran, eine Informatik Hausaufgabe zu machen, bekomme es aber leider nicht hin.. :(
ehrlich gesagt bin ich am verzweifeln
Dabei geht es darum, in
MOdellrechner mit PSeudoassembler
den Rechner die Zahlenreihe von 1 bis 10 hochzählen zu lassen.
Bis jetzt zählt er einfach nur von 1 los und hört auf, wenn dessen Zahlenbereich aufhört, was dann bei 9999 wäre.
Das habe ich bis jetzt eingegeben (man muss die Anfangszahl immer manuell eingeben):
MOPS 1.JPG

was ich gerne wissen würde ist, wie man erreichen kann, dass er, wenn er die Zahl 10 ausgibt, aufhört zu rechnen?
Ich bin halt zu inkompetent dazu, das zu verstehen.
Ich hoffe irgendjemand hier im Forum versteht das einigermaßen und kann mir dabei helfen, wie ich das verändern muss... :)

Schonmal danke im Vorraus! :)

 
  • Like
Reaktionen: LegendaryVentox
Keine Ahnung obs sowas da gibt, aber probier mal mit einer If Schleife bevor dazugezählt wird zu prüfen, ob in deinem Falle b = 10 entspricht. Vielleicht findest du in der Dokumentation zum Programm sowas ^^

Grüße
 
  • Like
Reaktionen: JaAngenommen
Keine Ahnung obs sowas da gibt, aber probier mal mit einer If Schleife bevor dazugezählt wird zu prüfen,
so was ähnliches. Das hab ich aber schon mal probiert und es ging nicht so wie ich es wollte. Und im INternet steht dazu nichts, weil die Leute nicht wollen, dass Schüler was abschreiben können. Es gibt nur ein Beispiel für Lehrer.. :(

Vielleicht findest du in der Dokumentation zum Programm sowas ^^
Leider nein. Es bleibt halt einfach nicht stehen. Mein Problem ist halt, das ich die Logik des Rechners nicht verstehe, und dadurch nicht weiß, wie ich das formulieren mus..

Aber trotzdem danke für die Hilfe.. Es reicht auch so für den Lehrer, aber er hat gesagt dass das für die schlechteren ist, die das anders nicht hinbekommen :-)
aber ich glaube, die anderen sind noch schlechter :D :P
 
Hallo Leute,
ich sitze grade seit über einer Stunde daran, eine Informatik Hausaufgabe zu machen, bekomme es aber leider nicht hin.. :(
ehrlich gesagt bin ich am verzweifeln
Dabei geht es darum, in
MOdellrechner mit PSeudoassembler
den Rechner die Zahlenreihe von 1 bis 10 hochzählen zu lassen.
Bis jetzt zählt er einfach nur von 1 los und hört auf, wenn dessen Zahlenbereich aufhört, was dann bei 9999 wäre.
Das habe ich bis jetzt eingegeben (man muss die Anfangszahl immer manuell eingeben):
Anhang anzeigen 194144

was ich gerne wissen würde ist, wie man erreichen kann, dass er, wenn er die Zahl 10 ausgibt, aufhört zu rechnen?
Ich bin halt zu inkompetent dazu, das zu verstehen.
Ich hoffe irgendjemand hier im Forum versteht das einigermaßen und kann mir dabei helfen, wie ich das verändern muss... :)

Schonmal danke im Vorraus! :)

Guten Tag!

Ich kenne das Programm zwar nicht, jedoch würde es mich auch interessieren, wie das geht. Ich setze mich heute an das Programm ran und schreibe die Lösung dann hier rein! c:

~ batthomas
 
Zuletzt bearbeitet:
Unbenannt.JPG
http://www.viktorianer.de/info/material/mops-1.01.pdf

Dann musst du noch in deinen code ein
cmp und ein jgt machen.

Aber ich selbst kann kein Assembler, also kann ich dir keinen genauen Code schreiben.
Ich versuche es trotzdem mal:
Code:
in a
:zahlen
ld a
cmp 10 //vergleicht a mit 10
jgt erreicht //Wenn der Wert größer als 10 ist, wird zu erreicht gesprungen
ld a //Ich glaube ich muss a hier laden bevor ich da etwas dazu addiere
add 1 //addiert zu dem Wert 1
:erreicht
end
 
Zuletzt bearbeitet von einem Moderator:
  • Like
Reaktionen: batthomas
Guten Tag!

Ich bin mit dem Code fertig, ich hoffe ich konnte dir helfen. Mir hat es Spass gemacht! :p
Code:
in a
ld a
st a :logic
cmp 10
jgt finish
add 1
jmp logic
st a :finish
end

~ batthomas
danke...
meine klassenkameraden werden sich auch darüber freuen

Guten Tag!

Ich bin mit dem Code fertig, ich hoffe ich konnte dir helfen. Mir hat es Spass gemacht! :p
Code:
in a
ld a
st a :logic
cmp 10
jgt finish
add 1
jmp logic
st a :finish
end

~ batthomas
hab nen fehler gefunden...
wenn cmp 10 dasteht, zählt er bis 11..
daher muss man cmp 9 machen. er zählt nämlich bis zu einer zahl, und wenn diese größer als 10 ist, hört er auf..
wenn du cmp 9 machst, hört er auf, wenn die zahl größer als 9 ist, also bei 10. trotzdem nochmal danke dafür
 
  • Like
Reaktionen: batthomas
danke...
meine klassenkameraden werden sich auch darüber freuen


hab nen fehler gefunden...
wenn cmp 10 dasteht, zählt er bis 11..
daher muss man cmp 9 machen. er zählt nämlich bis zu einer zahl, und wenn diese größer als 10 ist, hört er auf..
wenn du cmp 9 machst, hört er auf, wenn die zahl größer als 9 ist, also bei 10. trotzdem nochmal danke dafür
Ich hatte Zeit übrig und wollte bisschen Spass haben :P
 
  • Like
Reaktionen: JaAngenommen
weshalb das?

jagut, ist vielleicht nicht mein lieblingsthema, aber besser als latein :D
Ich will auch Assembler haben :(
Letztes Schuljahr haben wir irgendwas langweiliges mit Java gemacht und dieses Schuljahr programmieren wir wahrscheinlich gar nicht mehr. Das ist einfach kacke (sry für die Wortwahl, und das ist weit untertrieben).
 
@batthomas hab nochmal nen Fehler entdeckt: Du musst noch
out a
Machen, damit es auch ausgegeben wird

nun haben wir ein wenig weitergemacht..

jetzt kann ich eine division rechnen lassen, bei der es dann auch die nachkommastellen nacheinander anzeigt (ablauf: ausgabestopp einstellen).

Code:
;Werte eingeben                                                
in a ;Zähler                                                
in b ;Nenner                                                
                                                
;Sichergehen, dass b nicht 0 ist                                     
ld b                                                
cmp 0                                                
jeq #3                                                
                                                
;Division (ganzzahlig)                                                
ld a :loop ;Anfang Schleife                                                
div b                                                
st d                                                
out d                                                
                                                
;Rest ermitteln                                                
ld a                                                
mod b                                                
st a ;Rest                                                
cmp 0 ;fertig?                                                
jeq end                                                
                                                
;mit 10 multiplizieren                                                
mul 10                                                
st a                                                
jmp loop                                                
                                                
;Beenden                                                
end :end

nun muss ich es schaffen, die anzahl der nachkommastellen, die mir dann angezeigt werden, vorher vorgeben zu können.
Da hab ich natürlich mal wieder keine ahnung D:

Wenn man vorher die schelife entfernt und einfach in der anzahl der nachkommastellen den jeweiligen code einfügt, das kann ich natürlich auch..

ich meinte, (ich bin mir nicht mal sicher, ob das damit überhaupt geht ;)) dass man mit 'in c' oder so am anfang eingeben kann wieviele nachkommastellen er rechnet und dann aufhört... D:



//edit:
ich habe es schon :p

Code:
;Werte eingeben
in a ;Zähler
in b :B ;Nenner
in c ;Anzahl der nachkommastellen

;Sichergehen, dass b nicht 0 ist
ld b
cmp 0
jeq B

;Division (ganzzahlig)
ld a
div b
st d
out d


;Rest ermitteln
ld a :loop ;Anfang Schleife
mod b
st a ;Rest
cmp 0 ;fertig?
jeq end

;mit 10 multiplizieren
mul 10
st a

ld a
div b
st d
out d

ld h
add 1
st h
ld h
cmp c
jeq end
jmp loop ;Ende Schleife


;Beenden
end :end
 
Zuletzt bearbeitet:
  • Like
Reaktionen: batthomas
Status
Für weitere Antworten geschlossen.

Soziale Medien

  • X
  • TikTok

Über uns

  • GommeHD.net ist einer der größten Minecraft-Server der Welt. Dir gefällt unser Server? Dann unterstütze uns durch einen Kauf im Shop!
  • Shop