Forum: Mikrocontroller und Digitale Elektronik Wie kann ich AND , OR usw realisieren


von dmad (Gast)


Lesenswert?

Hallo Leute,

kann mir einer sagen wie man nur aus mathematischen Befehlen Logische
erzeugen kann...also nehmen wir mal an mein Prozesor unterstüzt
Logische Befehle nicht..nun ist die Frage wie kann man ein
unterprogramm bzw. ein makro für z.B AND schreiben.


gruss
dmad

von Martin (Gast)


Lesenswert?

meinst du so:

unsigned char AND(unsigned char a, unsigned char b)
{
  if(a >= 1)
  {
    if(b >= 1)
      return 1;
  }

  return 0;
}

oder

unsigned char OR(unsigned char a, unsigned char b)
{
  return (a+b);
}

von dmad (Gast)


Lesenswert?

Danke für die Antwort,
ich meinte den code eher in assembler als in C, hätte etwas besser die
problematik beschreiben sollen...
also folgendes

x= 0101
y= 1110

AND x,Y liefert 0100

dies will ich jetzt ohne das AND befehl realisieren können also
praktisch ein MAkro für AND schreiben..aber bedenke ich habe keine
Logischen Befehle ..einzige Befehle die ich habe sind
Mathematische,Shift,cmp usw..

ein Ablaufdiagramm bzw. text wäre auch hilfreich

gruss
dmad

von Peter D. (peda)


Lesenswert?

"mein Prozesor unterstüzt Logische Befehle nicht"

Den mußt Du mir erstmal zeigen.

Was für Befehle soll er den sonst haben ?


Peter

von dmad (Gast)


Lesenswert?

Peter,
natürlich unterstüzt mein Prozessor Logische befehle ...alerdings
möchte ich diese nicht benutzen ..warum ich das nicht machen will um
das zu erklären müsste ich dir jetzt 10 seiten schreiben...deswegen
habe ich einfach gesagt "keine logischen befehle" ..und deswegen
brauche ich Makros dafür..

ok ich glaube das müsste woh als erklärung reichen

dmad

von Peter D. (peda)


Lesenswert?

"um das zu erklären müsste ich dir jetzt 10 seiten schreiben"

Solange Du nicht plausibel machen kannst, warum einer etwas völlig
sinnloses für Dich machen soll, wirst Du wohl auch keinen dafür
finden.

Du must auch erstmal schreiben, welche Befehle Du dann zulassen
willst.
Und wenn Du Assembler Macros willst, dann auch genau, welche CPU,
welchen Assembler und welche Macrosprache.


Peter

von Khani (Gast)


Lesenswert?

Ich habe keine Ahnung, wofür man so etwas brauchen könnte (außer für
Hausaufgaben, die man nicht machen will). Du musst die Aufgabenstellung
noch etwas erläutern :
- wie lange (in bit) sind Deine Variablen ?
- welche Befehle sind definitiv vorhanden (was für ein Befehlssatz)
- Hilfsvariablen verwendbar ?

Wenn Du mir das alles sagen kannst, dann kann man Dir auch helfen.
MfG, Khani

von dmad (Gast)


Lesenswert?

ok ich werde es nochmal versuchen zu erklären..hört sich blöd an was ich
suche aber ich weiss nicht wie ich das sonst erklären soll..

also nehmen wir mal an wir haben ein prozessor das eine fpu und eine
Alu hat diese beiden einhaiten sollen voneindar unabhängig betrieben
werden..stichpunkt diversitär..nun hat die eine einhait befehle die die
andere nicht hat und umgekehrt z.b Die FPU kann keine logischen befehle
während dir ALU nicht multiplizieren kann...da aber die aufgabe
diversitär zu lösen ist muss ich für die FPU genau diese befehle (also
logischen,AND OR,XOR) mit seinem Befehlssatz erstellen die wiederrum
nur addieren,subtrahieren,multiplizieren,dividieren und natürlich auch
schiften..ich habe schon für die ALU z.b die rutinen für Mul und div
als Ablaufdiagramm erstellt jetzt muss ich für die FPU die fehlenden
routinen erstellen...

so ich galube das müsste wohl als reichen anders kann ich es wirklich
nicht erklären.

und zur der frage wie lang meine bitvariable sein soll nehmen wir mal
an 4 bit wie oben beschrieben..

Peter:
um welchen Assembler Macros das handelt tut hier nicht zur Sache mich
intresiert nur das Flussdiagramm ..also wie es funktionieren könnte..da
ich auch nur die grundlegenden funktionen habe müsste es mit jeder cpu
gehen..denke ich mal oder?

von Khani (Gast)


Lesenswert?

Also jetzt mal ganz ehrlich :

Wenn ich eine FPU habe (mit welchem Zahlenformat auch immer - muss ja
nicht nach IEEE sein), dann macht es einfach überhaupt keinen Sinn,
irgendwelche logischen Operationen auf dem korrespondierenden Bitmuster
durchzuführen.

Beispiel : Wenn man die Zahl 1.5e6 (1,5 Mio) eins nach rechts shiftet,
was soll dann das Ergebniss sein 0.75e6 oder was ? Wenn man nämlich
einfach das Bitmuster verschiebt ist das Zahlenformat zum Teufel
abgewandert.

Das kommt mir hier so vor, als hätte man ein Brett zu zersägen und
einen Nagel in die Wand zu hauen und geht wie folgt vor : Man schlage
das Brett mit dem Hammer klein und versucht den Nagel mit der Säge in
die Wand zu hauen. Was soll das ?
Ganz davon abgesehen kann man meines Erachtens nach mit einer FPU keine
logischen Operationen auf den zugehörigen bitmustern durchführen. Eine
FPU beherrscht ja nicht einmal Sprungkalkulationen und schon gar keine
bedingten Sprünge, was für eine solche Lösung unabdingbar ist.

Vielleicht bin ich ja auch dumm, aber so was macht für mich nach den
Rechnerstrukturen echt keinen Sinn.

MfG, Khani

von dmad (Gast)


Lesenswert?

Ganz davon abgesehen kann man meines Erachtens nach mit einer FPU keine
logischen Operationen auf den zugehörigen bitmustern durchführen

das ist mir auch klar..das wahr ja meine frage bzw. main anliegen ich
möchte über arithmetische befehle diese realisieren...und das ist
möglich...wieso kann ich keine sprungbefehle realisieren? die Flags
werden doch auch bei einer subtraktion gesetzt und diese kann ich doch
für Sprünge benutzen...naja ich sehe es schon das wird nix..ist auch
kein einfaches thema villeicht liegts an mir das ich das nicht richtig
vorgetragen habe oder es kam nicht richtig rüber möchte hier keinen
beleidigen oder so...

trotzdem danke nochmal für alle.

von Korrektor (Gast)


Lesenswert?

Kollege, tut mir leid, aber jetzt muss ich mal kurz meinen Frust
loswerden:

Es kotzt mich an, dass heutzutage niemand mehr der Sprache mächtig zu
sein scheint!

Ich behaupte ja nicht von mir, dass ich fehlerfrei schreibe, aber

1.) Paket schreibt man ohne CK (ebay Fehler Nr.1)
2.) man kann nicht alle ß durch ein ss ersetzen
3.) So etwas wie eine Groß- und Kleinschreibung existiert auch noch
4.) Kommas sind nicht verboten

und
5.) meines sowie Einheit schreibt man nicht mit "ai"

Sorry

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.