Theoretische und technische Informatik - ganz praktisch
Herzlich willkommen auf der Question/Answer-Plattform zu Grundlagen der Informatik II. Wir wünschen Ihnen viel Spaß beim Lernen und Diskutieren!
Loggen Sie sich mit Ihrem KIT-Account (u...) ein, um loszulegen!
Beachten Sie auch diese Informationen zum Schnelleinstieg.
(Nicht-KIT-Studierende beachten bitte diese Informationen.)

Beliebteste Tags

verständnis alternativlösung klausur kellerautomat endlicher-automat grammatik regulärer-ausdruck turingmaschine pumpinglemma tipp zahlendarstellung cmos bonusklausur klausurrelevant komplexität schaltwerk binary-decision-diagram deterministisch assembler schaltnetz minimierung sprachen nichtdeterministisch huffman chomsky-normalform fehler-in-aufgabe anwesenheitsübung rechtslinear heimübung flip-flop huffman-kodierung cocke-younger-kasami-algorithmus kontextsensitive-grammatik kontextfreie-grammatik fehlererkennbarkeit hauptklausur vorlesungsfolien polynomialzeitreduktion kontextfreie-sprache faq gleitkommazahl fehlerkorrigierbarkeit rechtslineare-grammatik dateiorganisation cache darstellung-klausur nachklausur xwizard adressierungsarten mealy lambda endliche-automaten konjunktive-normalform pipelining zustände saalübung leeres-wort moore ohne-lösungen betriebssystem speicherorganisation monotone-grammatik 2-komplement hammingzahl lösungsweg fehler pumping-lemma-für-kontextfreie-sprachen pumping-lemma reguläre-sprache monoton kodierung berechenbarkeit klausureinsicht disjunktive-normalform abzählbarkeit info-ii bussysteme rechnerarchitektur entscheidbarkeit komplexitätsklassen chomsky-klassen ableitungsbaum vorlesungsaufzeichnung round-robin aufzählbarkeit minimierung-endlicher-automaten von-neumann-rechner binärzahl entscheidbar programmiersprachen stern-symbol automaten schaltnetze-und-schaltwerke nukit-fragen bewertung zugriffsarten umformung adressierung mengen binär-subtrahieren

Kategorien

0 Pluspunkte 0 Minuspunkte
176 Aufrufe
Hallo,
ich werde aus der Theorie der Assemblersprachen leider nicht ganz draus ob bei den Befehlen:
LOAD R1
DIV #10
direkt schon das Ergebnis von R1/10 in R1 abgespeichert wird oder ob man noch den Befehl STORE R1 benötigt.
Vielen Dank im Vorraus!
in Band II, Kapitel 7 von  

1 Eine Antwort

0 Pluspunkte 0 Minuspunkte
Hallo,

es gibt bei Assemblersprachen grundsätzlich 3 Befehlsarten:

1-Adressbefehle wie zB DELETE R1. Dadurch wird der Wert der sich in R1 befindet gelöscht.

Hier entspricht R1 deiner (einzigen) Quelle, ein Ziel gibt es nicht.

2-Adressbefehle wie zB STORE #1, R1. Hierdurch wird der Wert 1 im Register R1 gespeichert.

Hierbei entspricht die Zahl 1 deiner Quelle, das Ziel ist R1. Es gibt also eine Quelle und ein Ziel.

3-Adressbefehle wie zB MULTIPLY R1, R2, R1. Hierdurch wird R1 mit R1 multipliziert und wieder in R1 gespeichert.

Hier hast du nun zwei Quellen mit denen die Operation durchgeführt (R1 und R2) und ein Ziel (R1). Es gibt also zwei Quellen und ein Ziel.

Für einen Befehel bei dem der Wert von R1 durch 10 geteilt werden soll und wieder in R1 gesüeichert brauchst du einen 3-Adressbefehl:

DIV R1, #10, R1.

Ich hoffe das hilft weiter!

Viele Grüße

Lukas (Tutor)

 

.
von uxdui Tutor(in) (103k Punkte)  
0 0
Hallo Lukas,

Danke für die schnelle Antwort!
Ich meine aber einen 1-Adressbefehl (wie zum Beispiel bei Aufgabe 83 b) des zweiten Buches).
Wenn es nämlich so ist, dass der Befehl DIV #10 das Ergebnis direkt wieder in R1 speichert (und somit die alte Zahl überschreibt), dann verstehe ich die Lösung der Aufgabe nämlich nicht. Denn dann würde man ja schon die letzte Ziffer der Zahl abschneiden bevor man sie überhaupt mit dem Modulo-Befehl auslesen kann.
Oder ist es so, dass durch DIV #10 nur das Ergebnis berechnet wird und dann erst durch den zweiten Befehl STORE R2 in R2 gespeichert wird und somit R1 nicht verändert wird (also R1 noch den ursprünglichen Wert hat, aber R2=R1/10)?
Ich hoffe es war verständlich wo mein Problem liegt.

Viele Grüße
0 0
Ah jetzt verstehe ich dein Problem.
In solchen Fällen wird der Wert in dem sog. Akkumulator (AKk) gespeichert bzw aus ihm geladen. (Vergleiche Folie 9-12)
Für LOAD #1 wird der Wert 1 in Akk gespeichert.
Für STORE R3 wird der Wert des Akk in R3 gespeichert.
Für SUBTRACT #1 wird der Wert 1 vom Wert des Akk abgezogen usw.

Hilft dir das?
0 0
Hallo, ich verstehe den Code zur Aufgabe 83b) folgendermaßen:
x= 4112
R1: 4112

1.Schlaifendurchgang:

Dann wird der Wert 0 in R3 gespeichert.
Dann R1 Div 10 = 411 und das in R2 gespeichert.
Dann R1 Mod 10 = 2, dann 2+R3 = 2+0 =2 und die 2 wird in R3 gespeichert.
Dann wird R1 mit dem Ergebnis von R2 überschrieben: also R1 = 411.

2. Schleifendurchgang:
 411 Div 10 = 41, wird in R2 gespeichert R2: 41
Dann 411 Mod 10 = 0, danch wird 0+R3 = 0+2=2 gerechnet und in R3 gespeichert.
Dann wird R1 wieder durch den Wert in R2 ersetzt: R1= 41
usw.

Ich komm dann auf den Wert 5 und nicht 8

Wo liegt mein Fehler?
0 0
4112 MOD 10 = 2
411 MOD 10 = 1
41 MOD 10 = 1
4 MOD 10 = 4

Alles aufsummiert in R3 ergibt 8 :)
...