Step 7 Eine Frage zum Sprungbefehl...

spirit

Level-1
Beiträge
961
Reaktionspunkte
23
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi, irgendwie verstehe ich den Sprungbefehl nicht...

Habe mal folgendes (einfache) Beispiel gemacht:

Code:
   U     E      0.0
   SPBN  TEST
   =     M     10.0
TEST: NOP   0

Zu Beginn ist alles klar; wenn jedoch E0.0 den Status 1 erhält, so wird der Merker ebenfalls TRUE. Soweit ja ok; aber warum behält der Merker seinen Status TRUE, wenn E0.0 wieder FALSE wird?

Dann müsste doch direkt zu der Sprungmarke TEST gesprungen werden, so dass M10.0 wieder Null werden kann?
 
Danke Euch!

Obgleich nun ja dann E0.0 wieder Null ist und somit doch die UND-Bedingung nicht mehr erfüllt ist... bleibt der Merker an...

1)
D.h. also, wenn direkt zur Sprungmarke gesprungen wird, dann behält der Merker seinen Status, obwohl es sich nur um eine Zuweisung handelt. Richtig?

2)
Würde nun anstelle des Merkers ein Ladebefehl stehen, würde dieser dann auch ständig weiterhin ausgeführt werden, wenn E0.0 = 0?

3)
Wie könnte man das umformen, damit der Merker den Status 1 erhält, wenn E0.0 = 1 und M wieder Null wird, wenn E0.0 = Null?

Anstelle des Merkers steht später natürlich noch mehr...

Lieben Dank!
 
Zuletzt bearbeitet:
die UND-Bedingung nicht mehr erfüllt ist...!

Du meinst die Sprungbedingung, die ist VKE-abhängig, welches ja durch U E0.0 in der Anweisung zuvor beeinflusst wird. Die CPU fährt nun, abhängig vom VKE, mit "VKE --> M10.0" oder eben "NOP 0" fort.

Oder wirkt das alles nicht mehr, weil der Merker (durch das Überspringen) komplett außer Acht gelassen wird?

Ja

Wie könnte man das umformen, damit der Merker den Status 1 erhält, wenn E0.0 = 1 und M wieder Null wird, wenn E0.0 = Null?

U E0.0
= M0.0

^^
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sorry, hatte meinen Beitrag noch geändert; daher hier nochmals meine Fragen:

1)
D.h. also, wenn direkt zur Sprungmarke gesprungen wird, dann behält der Merker seinen Status, obwohl es sich nur um eine Zuweisung handelt. Richtig?

2)
Würde nun anstelle des Merkers ein Ladebefehl stehen, würde dieser dann auch ständig weiterhin ausgeführt werden, wenn E0.0 = 0?

3)
Wie könnte man das umformen, damit der Merker den Status 1 erhält, wenn E0.0 = 1 und M wieder Null wird, wenn E0.0 = Null?

Anstelle des Merkers steht später natürlich noch mehr... unter anderem auch ein Ladebefehl und dieser ist ja VKE-unabhängig!
 
Zuletzt bearbeitet:
Wenn Du Befehle überspringst, ist das für diesen Moment so, als ob es diese Befehle gar nicht gebe.

Eine Zuweisung (oder auch Setzen/Rücksetzen) ist VKE-abhängig, deswegen brauchst bzw. sollst Du sie normalerweise nicht überspringen.
Lade- und Transfer-Befehle sind VKE-unabhängig. Deshalb musst Du sie überspringen, wenn sie nicht ausgeführt werden sollen.

Code:
[FONT=Courier New]      U    E0.0
      =    M0.0

      U    M0.0
      SPBN test
      L    ...
      T    ...
test: NOP  0[/FONT]
 
Lade- und Transfer-Befehle sind VKE-unabhängig. Deshalb musst Du sie überspringen, wenn sie nicht ausgeführt werden sollen.

Code:
[FONT=Courier New]      U    E0.0
      =    M0.0

      U    M0.0
      SPBN test
      L    ...
      T    ...
test: NOP  0[/FONT]

Danke hucki,

wenn der Ladebefehl einmal ausgeführt wurde und danach in Folge stets übersprungen wird, ist dann der Ladebefehl (entgegen dem Merker) "außer Kraft" gesetzt?

Also z.B. wird die Zahl 5 in das MW100 geladen und danach wird dieser Befehl übersprungen...

Dann kann an anderer Stelle ein anderer Wert in MW100 geladen werden, da das Laden der Zahl 5 übersprungen wird, stimmt das so?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja.

Wenn die Zuweisung des Merkers übersprungen wird, ist sie auch außer Kraft. Deshalb wurde er ja bei Dir nicht wieder 0.
Die letzte Merker-Zuweisung, die Dein Programm passiert hat, war mit dem VKE=1. Das wurde zugewiesen. Danach kam keine neue Zuweisung (mit VKE=0), weil sie übersprungen wurde.
 
Ich glaube du denkst massiv zu kompliziert.

Du hast irgend einen Wert in einen Speicher geschrieben, hier also den Merker-Bereich.
Schreiben tust du mit L/T/=/S/R. Wenn du nun also nichts mehr schreibst (weil du die Zuweisung überspringst), wodurch sollte sich jetzt dann also der Speicher ändern?

Mfg
Manuel
 
Zurück
Oben