HILFE !! Schleifenprogrammierung mit indirekter Adressierung

Arni80

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
mit dem unterem Programm sollen 100 hintereinander liegende Speicherzellen in aufsteigender Reigenfolge mit den Werten 1.0 bis 100.0 beschrieben werden.

Habe einen FC 41 und einen db 41(Db41 Arrey [1-100] REAL erstellt) erstellt und rufe den FC 41 dann über # DB_NUM im OB 1 auf

LEIDER WIR DER DB 41 NICHT MIT DEN WERTEN BESCHRIEBEN , STEHT ÜBERALL nur NE 0 DRIN. BITTE UM HILFE!!!was habe ich falsch gemacht?


Netz1.

L #DB_Num
T #I_DB_NUM
AUF DB [#I_DB_NUM]


Netz 2.

L P#0.0
T #Zeiger
L 1.000000e+000
T #Ini_Wert
L 100
BEGN: T #Zaehler
L #Ini_Wert
T DBD [#Zeiger]
L 1.000000e+000
+R
T #Ini_Wert
L #Zeiger
L P#4.0
+D
T #Zeiger
L #Zaehler
LOOP BEGN
 
Hallo,
was passiert denn ?
geht die CPU in STOP ?
M.E. ist deine Schleife nicht ganz vollständig :

--------------------------
L P#0.0
T #Zeiger
L 1.000000e+000
T #Ini_Wert

L 100
BEGN: T #Zaehler
L #Zaehler
L 1
< I
spb Ende

L #Ini_Wert
T DBD [#Zeiger]
L 1.000000e+000
+R
T #Ini_Wert

L #Zeiger
L P#4.0
+D
T #Zeiger

L #Zaehler
L 1
-I
LOOP BEGN

Ende: nop 0
-------------------
Jetzt müsste es funktionieren ...
 
L #Zaehler
L 1
-I
LOOP BEGN

Hier ist noch ein kleiner Fehler:

Code:
      L #Zaehler      // Zaehler wird in Akku 1 geladen
      L 1 
      -I              // Akku 1 wird um 1 verringert  
      LOOP BEGN       // Akku 1 wird nochmal um 1 verringert (LOOP-Befehl)

Die Schleife läuft also nur bis 50 und nicht bis 100.

Folgende Lösung sollte aber funktionieren:

Code:
      L     #DB_NUM
      T     #I_DB_NUM
      AUF   DB [#I_DB_NUM]
 
      L     P#0.0
      T     #Zeiger
      L     1.000000e+000
      T     #Ini_Wert
 
      L     100
BEGN: T     #Zaehler
      L     #Zaehler
      L     1
      <I    
      SPB   Ende
 
      L     #Ini_Wert
      T     DBD [#Zeiger]
      L     1.000000e+000
      +R    
      T     #Ini_Wert
 
      L     #Zeiger
      L     P#4.0
      +D    
      T     #Zeiger
 
      L     #Zaehler
      L     1
      -I    
      SPA   BEGN
 
Ende: NOP   0

Gruß Kai
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Und hier noch eine Lösung mit einer LOOP-Programmschleife: :cool:

Code:
      L     #DB_NUM
      T     #I_DB_NUM
      AUF   DB [#I_DB_NUM]
 
      L     P#0.0
      T     #Zeiger
      L     1.000000e+000
      T     #Ini_Wert
 
      L     100
BEGN: T     #Zaehler
 
      L     #Ini_Wert
      T     DBD [#Zeiger]
      L     1.000000e+000
      +R    
      T     #Ini_Wert
 
      L     #Zeiger
      L     P#4.0
      +D    
      T     #Zeiger
 
      L     #Zaehler
      LOOP  BEGN

Gruß Kai
 

Anhänge

  • FC42.pdf
    2,9 KB · Aufrufe: 25
Hat zwar keine Bedeutung aber ist das jetzt nicht exakt das Programm vom Threadanfang?

Du hast Recht, das ist mir noch gar nicht aufgefallen. :shock:

Da habe ich mir eine so schöne Lösung überlegt, und nun ist mein Programm genau dasselbe wie das Programm von Arnie80. :sad:

Und da mein Programm ohne Probleme funktioniert, muss auch das Programm von Arnie80 funktionieren. Das das Programm von Arnie80 nicht funktioniert hat, kann jedenfalls nicht am Programmcode gelegen haben. :!:

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OffTopic
@Kai

Sag mal, warum sind eigentlich dauernd komplett gelöschte Posts von dir in den Threads? Ich räum das zwar auf, aber gibts einen Grund dafür?
 
Und hier noch eine Lösung mit einer LOOP-Programmschleife: :cool:

Code:
      L     #DB_NUM
      T     #I_DB_NUM
      AUF   DB [#I_DB_NUM]
 
      L     P#0.0
      T     #Zeiger
      L     1.000000e+000
      T     #Ini_Wert
 
      L     100
BEGN: T     #Zaehler
 
      L     #Ini_Wert
      T     DBD [#Zeiger]
      L     1.000000e+000
      +R    
      T     #Ini_Wert
 
      L     #Zeiger
      L     P#4.0
      +D    
      T     #Zeiger
 
      L     #Zaehler
      LOOP  BEGN

Gruß Kai


Warum macht ihr immer Speicherindirekte Adressierung und keine Adressindirekte?

Code:
      L     #DB_NUM
      T     #I_DB_NUM
      AUF   DB [#I_DB_NUM]
 
      L     P#0.0
      LAR1
      L     1.000000e+000
      T     #Ini_Wert
 
      L     100
BEGN: T     #Zaehler
 
      L     #Ini_Wert
      T     DBD [AR1,P#0.0]
      L     1.000000e+000
      +R    
      T     #Ini_Wert
 
      +AR1 P#4.0
 
      L     #Zaehler
      LOOP  BEGN

Mir gefällt das besser.

godi
 
@Kai
Sag mal, warum sind eigentlich dauernd komplett gelöschte Posts von dir in den Threads? Ich räum das zwar auf, aber gibts einen Grund dafür?
TJA....
vielleicht hat kai zu viel freizeit....
und... machne leute haben halt einfach zu wenig arbeit.
aber sehen wir das mal positiv.
die die arbeit haben bekommen ihr nichtwissen durch kai kompensiert.
evtl rechnet sich das wirtschaftlich ja........................... :ROFLMAO:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sag mal, warum sind eigentlich dauernd komplett gelöschte Posts von dir in den Threads? Ich räum das zwar auf, aber gibts einen Grund dafür?

Ich lösche öfter mal, damit meine Posts immer schön ordentlich aussehen. :rolleyes:

Wenn das Aufräumen aber zu viel Mühe macht, werde ich das in Zukunft nicht mehr machen. :)

Gruß Kai
 
Ich lösche öfter mal, damit meine Posts immer schön ordentlich aussehen. :rolleyes:

Wenn das Aufräumen aber zu viel Mühe macht, werde ich das in Zukunft nicht mehr machen. :)

Gruß Kai

Ja laß die Löscherei, sonst blickt 1. keiner mehr durch, wenn sich jemand auf einen Beitrag von dir bezieht und 2. kann es dann nicht wirklich wichtig gewesen sein:ROFLMAO:! Rechtschreibungsverbesserung ist natürlich erlaubt :ROFLMAO:!
 
Zurück
Oben