Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: Assembler ::  Kleine Frage von Anfänger     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Wannalottadollar
Unregistrierter




Beitrag Wannalottadollar Unregistrierter 19:06:33 19.10.2017   Titel:   Kleine Frage von Anfänger            Zitieren

Hi, ich versuche gerade Assembler zu lernen und bin über dieses coole Teil hier gestolpert:
http://www.mathematik.uni ....... i1/ti_10_2_ger_web.html#1

Auf Seite 11/12 ist jeweils ein Code der in etwa identisch ist. Was ich dabei nicht verstehe sind 3 Sachen:

1. Warum wird in einem Code ebx und im anderen eax verwendet?

2. Auf S12 nach der cmp Anweisung steht jz <funktion> aber es gibt keine Bedingung. Auf einer Seite dann das gelesen:

Mit diesem Kommando wird zur Adresse <Sprungziel> verzweigt, falls die formulierte Bedingung erfüllt ist.

Nach dem Vergleich wie gesagt, finde ich keine Bedingung

3. Auf S11...
Erste Zeile, das auskommentierte passiert automatisch?
Dritte Zeile, hat der Push-Befehl was mit dem Hauptprogramm zu tun?
nachtfeuer
Moderator

Benutzerprofil
Anmeldungsdatum: 08.04.2010
Beiträge: 2232
Beitrag nachtfeuer Moderator 19:44:24 19.10.2017   Titel:   Re: Kleine Frage von Anfänger            Zitieren

Wannalottadollar schrieb:

1. Warum wird in einem Code ebx und im anderen eax verwendet?

vermutlich Abstufungsgründe - im Stack navigiert wird normalerweise mit dem Basepointer und nicht mit dem Stackpointer. Der Text scheint leicht subversiv das Verständnis in diese Richtung (man kann - gerade als Anfänger - sehr durcheinander kommen) zu erleichtern.
Wannalottadollar schrieb:

2. Auf S12 nach der cmp Anweisung steht jz <funktion> aber es gibt keine Bedingung. Auf einer Seite dann das gelesen:

Mit diesem Kommando wird zur Adresse <Sprungziel> verzweigt, falls die formulierte Bedingung erfüllt ist.

Nach dem Vergleich wie gesagt, finde ich keine Bedingung

doch, der Sprung selber enthält die Bedingung. Die Hexbefehle von Sprüngen bei 16bit haben oft eine Andeutung auf den eigentlichen Sinn. Was könnte der 16bit Hexbefehl 7E meinen?
Wannalottadollar schrieb:

3. Auf S11...
Erste Zeile, das auskommentierte passiert automatisch?
Dritte Zeile, hat der Push-Befehl was mit dem Hauptprogramm zu tun?

Das ist die klassische Anlage von Unterprogrammen: Zuerst Register sichern (die betroffenen, die bearbeitet werden) dann, beim Ende des Unterprogramms den Originalzustand der manipulierten Register wiederherstellen und dann zurückspringen (mit dem Ret, die Adresse liegt nochmal wo genau?)

_________________
https://www.youtube.com/watch?v=OLZ8jYHRdFw
http://www.maerchen.com/g ....... -die-sieben-geisslein.php
http://www.dielottozahlende.net
ghjgh
Unregistrierter




Beitrag ghjgh Unregistrierter 13:55:55 25.10.2017   Titel:              Zitieren

Danke, hab noch 2 Fragen zu deinen Antworten.

2. Da es ein 16 bit Befehl ist, werden 6 bit für den Befehl und 10 bit für die Zahl verwendet? (hab das mal so mitbekommen)?

3. Ich verstehe den Code so:

Zeile 1: speicher 00881038h in ebx, setze eip auf nächsten Befehl
Zeile 4: Reserviere neuen ebx-Speicher für Funktionsbasierte Variable
Zeile 8: lösche ebx-Speicher der Funktionsbasierten Variable - also Speicheradrersse -4byte, was im ebx nun auf die vorherige zeigt, die beim Programmaufruf ins ebx geschrieben wurde
Zeile 9: Setze Befehlzeiger auf aktuelle ebx

So richtig?
rtgh
Unregistrierter




Beitrag rtgh Unregistrierter 09:55:52 26.10.2017   Titel:              Zitieren

für antwort 3 würd mir ein ja oder nein reichen.
nachtfeuer
Moderator

Benutzerprofil
Anmeldungsdatum: 08.04.2010
Beiträge: 2232
Beitrag nachtfeuer Moderator 14:57:06 26.10.2017   Titel:              Zitieren

ghjgh schrieb:

2. Da es ein 16 bit Befehl ist, werden 6 bit für den Befehl und 10 bit für die Zahl verwendet?

Es gelten bei 16 Bit 8 Bit für den Sprung-Befehl und 8 Bit für die Sprunglänge. Einen 16 Bit-Befehl überspringen wäre dann bei 7E -> 7EFC.

ghjgh schrieb:

3.
Zeile 1: speicher 00881038h in ebx, setze eip auf nächsten Befehl

??
(Es steht im Kommentar bzw. im Gesamttext, was genau passiert)

_________________
https://www.youtube.com/watch?v=OLZ8jYHRdFw
http://www.maerchen.com/g ....... -die-sieben-geisslein.php
http://www.dielottozahlende.net
C++ Forum :: Assembler ::  Kleine Frage von Anfänger   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.