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

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

  
C++ Forum :: Assembler ::  Schleife&Verzweigung, Hilfe!!!!  
Gehen Sie zu Seite 1, 2  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Rodger
Unregistrierter




Beitrag Rodger Unregistrierter 11:25:47 29.01.2017   Titel:   Schleife&Verzweigung, Hilfe!!!!            Zitieren

Folgendes Programm soll ich als inline assembler sprache ausdrücken:

unsigned int func(unsigned int n)
{ while (n < 50){
n = 3*n + 2;
if (n > 50){
n = n-3; }
}
return n; }



a) Realisieren Sie die obige Funktion als ein Inline-Assembler-Programm mit Microsoft Visual Studio (oder Alternativen). Erstellen Sie dazu eine C/C++-Funktion, welche die Variable n als Funktionsparameter übergeben bekommt und die obigen Berechnungen in Assembler durchführt.

b) Geben Sie das Resultat mit der „printf“-Funktion aus.

c) Achten Sie darauf, dass sämtliche Register nach Programmende unverändert vorliegen.

d) Versehen Sie Ihr Inline-Assembler-Programm mit nachvollziehbaren Kommentaren.


Leider weiß ich nicht wie ich das realisieren soll da sich ja eine schleife und eine verzweigung im programm befindet die voneinander abhängen.

Mir ist bewusst das die mit den jump befehlen und cmp befehl geschehen soll. Aber zwei "schleifen" bereiten mir kopf zerbrechen...

Kann mir jemand bitte weiterhelfen?
icarus2
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.09.2009
Beiträge: 1795
Beitrag icarus2 Mitglied 16:41:13 29.01.2017   Titel:              Zitieren

Ersetzte die while-Schleife und die if-Abfrage durch goto Statements (auf Papier oder als C Programm). Wenn du das hast sollte es einfach sein das in Assembly Language umzuschreiben.


Zuletzt bearbeitet von icarus2 am 16:42:20 29.01.2017, insgesamt 2-mal bearbeitet
EOP
Mitglied

Benutzerprofil
Anmeldungsdatum: 15.09.2007
Beiträge: 1780
Beitrag EOP Mitglied 17:39:12 29.01.2017   Titel:              Zitieren

Na wie macht es denn VS?:

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
unsigned int func(unsigned int n)
{ while (n < 50){
00411590  push        ebp  
00411591  mov         ebp,esp
00411593  sub         esp,0C0h
00411599  push        ebx  
0041159A  push        esi  
0041159B  push        edi  
0041159C  lea         edi,[ebp-0C0h]
004115A2  mov         ecx,30h
004115A7  mov         eax,0CCCCCCCCh
004115AC  rep stos    dword ptr es:[edi]
004115AE  cmp         dword ptr [n],32h
004115B2  jae         func+41h (4115D1h)
    n = 3*n + 2;
004115B4  mov         eax,dword ptr [n]
004115B7  imul        eax,eax,3
004115BA  add         eax,2
004115BD  mov         dword ptr [n],eax
    if (n > 50){
004115C0  cmp         dword ptr [n],32h
004115C4  jbe         func+3Fh (4115CFh)
        n = n-3; }
004115C6  mov         eax,dword ptr [n]
004115C9  sub         eax,3
004115CC  mov         dword ptr [n],eax
}
004115CF  jmp         func+1Eh (4115AEh)
return n; }
004115D1  mov         eax,dword ptr [n]
004115D4  pop         edi  
004115D5  pop         esi  
004115D6  pop         ebx  
004115D7  mov         esp,ebp
004115D9  pop         ebp  
004115DA  ret


Ist doch schon ein Anfang. ;)

_________________
The notorious bit shifter.


Zuletzt bearbeitet von EOP am 17:42:11 29.01.2017, insgesamt 1-mal bearbeitet
nachtfeuer
Moderator

Benutzerprofil
Anmeldungsdatum: 08.04.2010
Beiträge: 2230
Beitrag nachtfeuer Moderator 22:29:20 29.01.2017   Titel:   Re: Schleife&Verzweigung, Hilfe!!!!            Zitieren

Rodger schrieb:
Aber zwei "schleifen" bereiten mir kopf zerbrechen...

kein Wunder, da ist ja auch nur eine. Schlechter Sprit? -> FuselDusel Auweia!!!!!!!!!!!

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

Benutzerprofil
Anmeldungsdatum: 27.03.2005
Beiträge: 5639
Beitrag Swordfish Mitglied 22:55:51 29.01.2017   Titel:              Zitieren

Du hast die if-Schleife übersehen, nachtfeuer.

_________________
To the journey! And to those of us who aren't here to celebrate it with us.
EOP
Mitglied

Benutzerprofil
Anmeldungsdatum: 15.09.2007
Beiträge: 1780
Beitrag EOP Mitglied 23:56:42 29.01.2017   Titel:              Zitieren

Swordfish schrieb:
Du hast die if-Schleife übersehen, nachtfeuer.
Auweia, die berüchtigte if-Schleife muss ich wohl übersehen haben.

_________________
The notorious bit shifter.
Grump
Unregistrierter




Beitrag Grump Unregistrierter 12:52:36 23.02.2017   Titel:              Zitieren

Swordfish schrieb:
Du hast die if-Schleife übersehen, nachtfeuer.


if ist ein Statement und keine Schleife ... Oder seit wann wiederholt if irgendwelche Anweisungen? Wenn man schon nicht in der Lage ist das irgendwann zu lernen sollte man vllt. wenigstens mal den Kopf einschalten.
SeppJ
Global Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 28204
Beitrag SeppJ Global Moderator 13:37:08 23.02.2017   Titel:              Zitieren

Grump schrieb:
Swordfish schrieb:
Du hast die if-Schleife übersehen, nachtfeuer.


if ist ein Statement und keine Schleife ... Oder seit wann wiederholt if irgendwelche Anweisungen?
Die if-Schleife ist ein Running Gag hier im Forum und auch sonst überall wo viele Programmieranfänger herum laufen. Die benutzen den Begriff nämlich sehr oft. Oft genug, dass jemand sogar dies eingerichtet hat: www.if-schleife.de

_________________
Korrekte Rechtschreibung und Grammatik sind das sprachliche Äquivalent zu einer Dusche und gepflegter Kleidung.
muemmel
Mitglied

Benutzerprofil
Anmeldungsdatum: 16.10.2007
Beiträge: 3682
Beitrag muemmel Mitglied 11:25:03 10.05.2017   Titel:              Zitieren

Hi SeppJ,

SeppJ schrieb:
Die if-Schleife ist ein Running Gag hier im Forum und auch sonst überall wo viele Programmieranfänger herum laufen. Die benutzen den Begriff nämlich sehr oft. Oft genug, dass jemand sogar dies eingerichtet hat: www.if-schleife.de

Wann begreift Ihr es denn endlich? Es gibt eine If-Schleife!
Code:
1. If-Anweisung aufschreiben
2. Übersetzungsversuch
3. Fehlermeeldung des Compilers ---> Zurück auf 1. und nächster Schleifendurchlauf.

Also wenn das keine If-Schleife ist, was dann??? :D :D :D

Gruß Mümel
Arcoth
Moderator

Benutzerprofil
Anmeldungsdatum: 02.10.2013
Beiträge: 3577
Beitrag Arcoth Moderator 18:23:45 29.05.2017   Titel:              Zitieren

SeppJ schrieb:
Grump schrieb:
Swordfish schrieb:
Du hast die if-Schleife übersehen, nachtfeuer.


if ist ein Statement und keine Schleife ... Oder seit wann wiederholt if irgendwelche Anweisungen?
Die if-Schleife ist ein Running Gag hier im Forum und auch sonst überall wo viele Programmieranfänger herum laufen. Die benutzen den Begriff nämlich sehr oft. Oft genug, dass jemand sogar dies eingerichtet hat: www.if-schleife.de
Schade, die Seite hätte wenigstens die korrekte Terminologie demonstrieren können: Es ist ein if-Statement bzw. eine if-Anweisung. if-Abfrage hab ich persönlich noch hie gehört.

_________________
Obstacles are those frightful things you see when you take your eyes off your goal. - Henry Ford
C++ Forum :: Assembler ::  Schleife&Verzweigung, Hilfe!!!!  
Gehen Sie zu Seite 1, 2  Weiter
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.