Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 3 von 5 ErsteErste 12345 LetzteLetzte
Ergebnis 21 bis 30 von 49

Thema: Addierer

  1. #21
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von _Praktikant_ Beitrag anzeigen
    Mir wurde am anfang dword gesagt -> beides möglich??
    Ja, es ist beides möglich, ich habs mal probiert. Mit DInt ist die Eingabe am Input des FC einfacher, ab DW#16#7FFFFFFF (größte DINT) wird dann so oder so in der Variablentabelle bei Einstellung DEZ immer eine Negative Zahl bei Addition angezeigt.

    DW#16#7FFFFFFF
    +
    DW#16#00000002
    =
    DW#16#80000001
    --> L#-2147483647 (mit Vorzeichen) (das ist so, weil die DINT "überläuft")
    oder
    --> 2147483649 (ohne Vorzeichen)

    Ich bin mir im Moment nicht sicher, die Vorzeichengeschichte und DWord/DInt sind eigentlich eher ein Problem der Darstellung auf dem Bildschirm. Ob man ein Rechenergebnis als Zahl größer 2147483647 oder als neagtive Zahl interpretiert hängt letztlich davon ab, was man braucht.

    Wenn ich da falsch liege korrigiert mich bitte, hab darauf noch nie zu viele Gedanken verschwendet.


    Zitat Zitat von _Praktikant_ Beitrag anzeigen
    Ist hier kopieren von werten aus DB in temp-var gemeint?

    Summand_1, Summand_2 sind IN
    Ergebnis OUT

    Du legst hintereinander 3 Temp-Var an

    Summand_1_temp, Summand_2_temp, Ergebnis_temp

    Die Input kopierst du in die Temp, dann kannst du mit AR1 und dem Offset alle 3 Variablen adressieren, der Ergebnis_temo zum Schluß in die Out kopieren.

    Code:
          L     32; 
          L     #Schleifenzaehler; 
          -I    ; 
          +AR1  ;
    bedeutet:

    AR1 := AR1 + (32 - #Schleifenzähler)

    (Onkel macht das anders, der rechnet in jeder Schleife AR1 := AR1 + P#0.1, und baut immer auf dem AR1 aus der vorhergehenden Schleife auf. Ich rechne das AR1 jedesmal am Anfang der Schleife neu aus. Beides führt zum Ziel.)

    Der Schleifenzähler beginnt ja bei 32 und wird dann von Loop bis 0 runtergezählt. Die duale Berechnung beginnt aber bei 0 und wird bis Bit 32 aufwärts durchgeführt.

    Zitat Zitat von _Praktikant_ Beitrag anzeigen
    Was fehlt denn noch alles bei der schleife von onkel dagobert?
    XOR-verknüpfung von s1,s1 und altem übertrag und...?
    Onkel hat das mit AR1 und AR2 gemacht, das geht auch.
    Und er hat das AR1 und AR2 etwas anders hochgezählt für die Erhöhung der Bitnummer.
    Außerdem fehlt die Berechnung des jeweils neuen Übertrages, darauf bist du ja oben eingegangen, ist in dem Wiki-Beitrag ja schön zu sehen.
    Geändert von Ralle (16.08.2007 um 16:41 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  2. #22
    Registriert seit
    02.04.2006
    Ort
    nähe Muc
    Beiträge
    2.787
    Danke
    115
    Erhielt 126 Danke für 107 Beiträge

    Standard

    Er kann auch Taschnrechner spielen.

    0 + 0 ergibt 0,
    0 + 1 ergibt 1,
    1 + 0 ergibt 1,
    1 + 1 ergibt 0 mit Übertrag von 1 auf die nächsthöherwertige Stelle.

    Er Wetet den letzten Bit der beiden Binärzahlen aus und hat ein Merkberit für die nächsthöherwertge Stelle, das Ergebniss in eine neue Binärzahl.

    Je nachdem ob er Word oder Doppelword oder String nimmt muss halt der Loop lang sein.

    Ist normal ne Übungsaufgabe aus Assembler.
    ___________________________________________





    Sende eine SMS mit dem Stichwort "Feuer" an die 112 und innerhalb von 10 Minuten steht ein roter Partybus mit derbem Sound vor deiner Tür.


    AGB: Wer Rechtschreibfehler findet darf diese behalten. Bitte meine in eile gefertigten, selten anfallenden Vertipsler zu entschuldigen.

  3. #23
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Zitat Zitat von maxi Beitrag anzeigen
    Er kann auch Taschnrechner spielen.

    0 + 0 ergibt 0,
    0 + 1 ergibt 1,
    1 + 0 ergibt 1,
    1 + 1 ergibt 0 mit Übertrag von 1 auf die nächsthöherwertige Stelle.

    Er Wetet den letzten Bit der beiden Binärzahlen aus und hat ein Merkberit für die nächsthöherwertge Stelle, das Ergebniss in eine neue Binärzahl.

    Je nachdem ob er Word oder Doppelword oder String nimmt muss halt der Loop lang sein.

    Ist normal ne Übungsaufgabe aus Assembler.
    Ja, aber er soll doch nicht addieren, jedenfalls nicht mit "+" und Add, also bleibt nur die logische Auswertung per U, O, X, UN ...
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #24
    Registriert seit
    10.05.2005
    Beiträge
    1.996
    Danke
    220
    Erhielt 233 Danke für 204 Beiträge

    Standard

    Hi Ralle

    Will hier NICHT nerven.


    Ja, aber er soll doch nicht addieren, jedenfalls nicht mit "+" und Add, also bleibt nur die logische Auswertung per U, O, X, UN ...
    Oder eine Subtraktion mit der ( 2.Zahl * -1)


    @Praktikant
    Wurde WIRKLICH mit "Indirekter Adressierung ... " gesagt ?
    Karl

  5. #25
    Registriert seit
    02.04.2006
    Ort
    nähe Muc
    Beiträge
    2.787
    Danke
    115
    Erhielt 126 Danke für 107 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Ja, aber er soll doch nicht addieren, jedenfalls nicht mit "+" und Add, also bleibt nur die logische Auswertung per U, O, X, UN ...
    Kann er ja mit Und, Oder, S, R machen.

    Ich weiss aber noch was geileres

    Einen Zähler *fg*
    bzw. wenn ganz ohne Addieren dann mit 3 zählern *lach*
    ___________________________________________





    Sende eine SMS mit dem Stichwort "Feuer" an die 112 und innerhalb von 10 Minuten steht ein roter Partybus mit derbem Sound vor deiner Tür.


    AGB: Wer Rechtschreibfehler findet darf diese behalten. Bitte meine in eile gefertigten, selten anfallenden Vertipsler zu entschuldigen.

  6. #26
    Registriert seit
    10.05.2005
    Beiträge
    1.996
    Danke
    220
    Erhielt 233 Danke für 204 Beiträge

    Standard

    Hi MAXI


    Ist deine Signatur defekt ?

    Server abgestürtzt ?

    Mein JAVA fehlerhaft installiert.


    Irgendwie bekomme ich keine "Bewegung mehr".
    Karl

  7. #27
    Registriert seit
    02.04.2006
    Ort
    nähe Muc
    Beiträge
    2.787
    Danke
    115
    Erhielt 126 Danke für 107 Beiträge

    Standard

    Die hatten mich ned so lieb wie ich war.
    Wollen nur perfekte arische Signatruren.
    Ich wurde Diknriminiert! *spass*

    Lassen wir die Diskussion aber, das kannst du mir Privat mitteilen. Mag keien Zirkusveranstaltung hier mehr.
    ___________________________________________





    Sende eine SMS mit dem Stichwort "Feuer" an die 112 und innerhalb von 10 Minuten steht ein roter Partybus mit derbem Sound vor deiner Tür.


    AGB: Wer Rechtschreibfehler findet darf diese behalten. Bitte meine in eile gefertigten, selten anfallenden Vertipsler zu entschuldigen.

  8. #28
    Registriert seit
    10.05.2005
    Beiträge
    1.996
    Danke
    220
    Erhielt 233 Danke für 204 Beiträge

    Standard

    Hi Maxi

    Zum Trost schau doch mal zu deinem Tread XP und SP2.


    Sorry, hatte mich etwas verlesen.
    Karl

  9. #29
    Registriert seit
    06.10.2003
    Beiträge
    3.411
    Danke
    451
    Erhielt 504 Danke für 407 Beiträge

    Standard

    Zitat Zitat von _Praktikant_ Beitrag anzeigen
    ..Was fehlt denn noch alles bei der schleife von onkel dagobert?..
    Code:
     
    ... AR1 sichern (TAR1)
    ... Summanden in Lokaldaten kopieren
    ... Adressen der Summanden in AR1 und AR2 laden (LAR1, LAR2)
    ... Übertrag initialisieren (auf "0" setzen)
     
          L     32
    L001: T     #TEMP_INT
    //*** Binärergebnis unter Berücksichtigung des Übertrag
          X      [AR1,P#0.0]
          X      [AR2,P#0.0]
          X     #UEBERTRAG
          =     #EINS                       // Ergebnisbit
     
    //*** Übertrag
    ... Ein neuer Übertrag erfolgt, wenn 
    ... beide bits in den Zahlen "1" sind, ODER 
    ... ein bit "1" ist UND ein aktueller Übertrag ansteht.
          =     #UEBERTRAG
     
          U     #EINS
          =      [AR2,P#0.0]                // am Ende steht die Summe in AR2
     
          +AR1  P#0.1
          +AR2  P#0.1
          L     #TEMP_INT
          LOOP  L001
     
    ... Summe, welche über AR2 in eine der Variablen
    ..."Summand" abgelegt wurde, in die Variabe "Summe" kopieren
    ... AR1 wieder herstellen (LAR1)
    .
    Wenn du das so umsetzt, hast du deinen ersten Erfolg. Beim Testen wirst du jedoch feststellen, dass es nicht über den ganzen 32-Bitbereich funktioniert. Aber bring es erst einmal soweit zum laufen, das solltest du schaffen.


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  10. #30
    Avatar von _Praktikant_
    _Praktikant_ ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.08.2007
    Ort
    FH
    Beiträge
    8
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ok, dann werd ich versuchen die sachen morgen umzusetzen !
    Was mir grad noch etwas unklar im bsp von ralle ist, sind die 4 zeilen
    1.
    [HTML]
    L 32
    L #Schleifenzaehler
    -I
    T #Zaehlvar[/HTML]
    Was ist mit T #Zaehlvar
    passiert bzw. wie/wozu wird die verarbeitet?
    und dann 2.
    [HTML]
    L 32;
    L #Schleifenzaehler;
    -I ;
    +AR1 ; [/HTML]
    Ist doch der bitweise durchlauf der zahl (wie die andere möglichkeit von onkel)?
    Danke nochmals und schönen abend noch...

Ähnliche Themen

  1. Addierer
    Von Xorron im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 17.02.2009, 07:33

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •