Die Mathe-Redaktion - 24.05.2018 19:23 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
ListenpunktSchwätz / Top 15
ListenpunktWerde Mathe-Millionär!
ListenpunktAnmeldung MPCT Juli
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden. Mitglieder können den Matheplanet-Newsletter bestellen, der etwa alle 2 Monate erscheint.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 538 Gäste und 19 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von matroid
Informatik » Technische Informatik » Was macht dieses Assembler Programm?
Druckversion
Druckversion
Antworten
Antworten
Autor
Universität/Hochschule Was macht dieses Assembler Programm?
deskjet
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 19.11.2016
Mitteilungen: 35
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2018-04-24


Hallo,
weiß wer was dieser assembler-pseudo-code macht?
Assembler
  1. Loop LDA Total ; Accumulate total
  2. Add_instr ADD Table ; Begin at head of table
  3. STO Total ;
  4. LDA Add_instr ; Change address ...
  5. ADD One ; by modifying instruction!
  6. STO Add_instr ;
  7. LDA Count ; Count iterations
  8. SUB One ; Count down to zero
  9. STO Count ;
  10. JGE Loop ; If >= 0 repeat
  11. STP ; Halt execution
  12.  
  13.  
  14. ; Data definitions
  15. Total DEFW 0 ; Total - initially zero
  16. One DEFW 1 ; The number one
  17. Count DEFW 4 ; Loop counter (loop 5x)
  18. Table DEFW 39 ; The numbers to total ...
  19. DEFW 25 ;
  20. DEFW 4 ;
  21. DEFW 98 ;
  22. DEFW 17 ;


Ich weiß schon was die einzelnen befehle machen. LDA Total lädt den Accumulator mit dem wert von Total, d.h. 0. Aber ich versteh nicht bei dem zweiten Befehle steht "Add_instr" vor "ADD Table"? Wieso ist das so, welchen nutzen hat das? Und den 4. Befehl versteh ich dann auch nicht, d.h. "LDA Add_instr ;". Weiß wer mehr? Der lädt dann ja anscheinend den Accumulator mit dem Wert von "Add_instr", aber was ist denn dieses Add_instr? Irgendwie hängt das ja mit dem 2. Befehle zusammen...



  Profil  Quote  Link auf diesen Beitrag Link
ligning
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 07.12.2014
Mitteilungen: 2037
Aus: Berlin
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2018-04-24


Hallo,

das Add_instr ist offenbar ein Label, es steht für die Adresse dieser Anweisung. Später wird, wie der Kommentar auch sagt, die Anweisung modifiziert.


-----------------
⊗ ⊗ ⊗



  Profil  Quote  Link auf diesen Beitrag Link
Buri
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 02.08.2003
Mitteilungen: 45480
Aus: Dresden
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, eingetragen 2018-04-24


Hi deskjet,
es handelt sich um ein selbstmodifizierendes Programm, das seinen eigenen Code verändert.
In diesem Fall wird die im Befehl ADD Table enthaltene Adresse Table schrittweise um 1 erhöht. Damit das auf einem konkreten Prozessor funktioniert, muss man wissen, wie Befehle gespeichert werden, sie bestehen aus einem Befehlscode und Argumenten, in diesem Fall eine Adresse.
Offenbar soll der Befehl STO Add_instr den gesamten Befehl ersetzen, der aus Befehlscode und Adresse besteht.
Selbstmodifizierende Programme werden normalerweise nicht benutzt, weil das zu fehleranfällig ist, daher ist dies ein sehr theoretisches Beispiel ohne jeden praktischen Nutzen.
Gruß Buri



  Profil  Quote  Link auf diesen Beitrag Link
ligning
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 07.12.2014
Mitteilungen: 2037
Aus: Berlin
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2018-04-24


Zusatz: Das ist offenbar kein "Assembler-Pseudo-Code".
www.fbi.h-da.de/fileadmin/personal/g.froehlich/MU0-1.pdf



  Profil  Quote  Link auf diesen Beitrag Link
deskjet
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 19.11.2016
Mitteilungen: 35
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, vom Themenstarter, eingetragen 2018-04-25


Ah ok. es wird also im grunde genommen die werte von table aufaddiert auf total, solange bis count im negativen bereich ist und das negativ-flag gesetzt wird, denn dann bricht die loop ab. Und der ganze kram mit dem Add_instr ist nur dazu um die adresse von table zu manipulieren, weil man ja jeweils immer den nächsten table-wert addieren will. Ja macht sinn.

Ja des ist wohl auch kein pseudo-code, sondern assembler-code von diesem MU0. aber ich finde über google nichts von diesem mu0-rechner, deswegen hab ich gedacht den gibts gar nicht wirklich.



  Profil  Quote  Link auf diesen Beitrag Link
Buri
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 02.08.2003
Mitteilungen: 45480
Aus: Dresden
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, eingetragen 2018-04-28 12:29


2018-04-25 00:51 - deskjet in Beitrag No. 4 schreibt:
... ich finde über google nichts von diesem mu0-rechner ...
Hi deskjet,
mit der Suche nach "MU0 Computer" findest du das hier.
Es handelt sich nicht um einen wirklichen Prozessor, sondern nur um ein theoretisches Modell.
Gruß Buri



  Profil  Quote  Link auf diesen Beitrag Link
DrStupid
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 07.03.2011
Mitteilungen: 419
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, eingetragen 2018-04-29 19:51


2018-04-24 19:56 - Buri in Beitrag No. 2 schreibt:
Selbstmodifizierende Programme werden normalerweise nicht benutzt, weil das zu fehleranfällig ist, daher ist dies ein sehr theoretisches Beispiel ohne jeden praktischen Nutzen.

Beim C64 war das noch alles andere als theoretisch. Weil der 6510 Speicheroperationen mit absoluter Adressierung schneller verarbeitet als mit indirekter Adressierung, kann man hier mit selbstmodifizierendem Code einen Taktzyklus pro Schleifendurchlauf sparen. Heute sind die Prozessoren so leistungsfähig, dass ressourcenschonende Programmierung in der Prioritätenliste ganz weit hinten steht.



  Profil  Quote  Link auf diesen Beitrag Link
deskjet hat die Antworten auf ihre/seine Frage gesehen.
deskjet hatte hier bereits selbst das Ok-Häkchen gesetzt.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2018 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]