mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mal ne Frage.....


Autor: Danny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe folgendes Problem:

Ich habe ein Zahl (belibig, eingegeben über eine Tastatur) mit 16 bit
länge. Nun will ich diese Zahl mit 6000 vergleichen. Das ganze in
Assembler. Nur habe ich, was das Vergleichen angeht, noch nicht viel
Erfahrung. Falls es eine Rolle spielen sollte: das ganze auf einem
AT90S8535. Für anregungen und tips bin ich dankbar.....


Gruß Danny

Autor: Fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, dein Problem ist, dass Du zu faul bist
und weder lesen noch denken kannst...

Autor: Danny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also Leute die keinen Umgangston haben und Anfängern nicht helfen
wollen/können, sollten lieber Klappe halten und gar nichts schreiben
anstatt irgendwelche "geistreichen" Kommentare abzugeben. Für alle
ernsthaften Antworten bin ich aber weiterhin offen.....

Autor: Fritz Ganter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da gibt es einen Befehl für compare und ein Befehl für branch. Ich
programiere nicht in Assembler, aber der Compiler macht das draus:

415:lader.c       ****  if (jjj>iii)
 1268                 .LM143:
 1269 05d6 2091 0000     lds r18,jjj.1
 1270 05da 3091 0000     lds r19,(jjj.1)+1
 1271 05de 8091 0000     lds r24,iii.0
 1272 05e2 9091 0000     lds r25,(iii.0)+1
 1273 05e6 8217          cp r24,r18
 1274 05e8 9307          cpc r25,r19
 1275 05ea 20F4          brsh .L123
 416:lader.c       ****      iii=0;
 1277                 .LM144:
 1278 05ec 1092 0000     sts (iii.0)+1,__zero_reg__
 1279 05f0 1092 0000     sts iii.0,__zero_reg__
 1280                 .L123:

Also zuerst die unteren 8bit mit cp vergleichen, dann die oberen 8bit
mit cpc (compare with carry). Dann brsh (Branch if same or higer).

Was die Befehle bedeuten hab ich im Datenblatt nachgesehen, das kannst
du ja auch.

Aber im Prinzip hat mein Namensvetter schon recht, das ist so trivial
dass ich mich sowas nie Fragen trauen würde wenn ich in Assembler
programmiere.

Ist dasselbe als wenn ich frage: Wie vergleiche ich 2 Werte
miteinander, am besten in C, weil ich in C programmiere.

Entweder du programmierst in Assembler, dann solltest dich auch mit so
trivialen Fragen auseinandersetzen oder nimmst Basic.
Und es gibt unzählige  Codebeispiele in die man reinsehen kann um zu
lernen.

(Ui, jetzt werden die Basic Programmierer wieder auf mich schimpfen).


So, heute hab ich wieder brav die Hausaufgaben für andere erledigt. :-)

Autor: Danny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In Basic oder C ist das ja auch ne Nummer einfacher, habe ich schon
ausprobiert. Da ich aber mein bisheriges Programm schon in Assembler
programmiert habe und das soweit Funktioniert und ich eben nur noch
eine Maximalwertabfrage einfügen wollte, war ich nicht bereit das ganze
in C oder Basic nochmal zu schreiben. O.K. vieleicht ist das eine Frage
die einfach zu beantworten war, aber nach 9h arbeit und 4h Schule ist
eben irgendwann mal die Luft raus. Es gab auch schon in Basic wirklich
blöde Fragen, aber es ist noch lange kein Grund patzig zu werden. Danke
jedoch für deine Hilfe und deren die vielleicht noch kommen.

Autor: ulrich strobel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
erst vergleichst du die highbytes, sind die dann identisch vergleichst
du noch die lowbytes, ist eine der beiden bedingungen falsch ist die
compareabfrage mit nein beandtwortet.

cpi highreferenz,highzahl
brne nichtgleich
cpi lowreferenz,lowzahl
brne nichtgleich
gleich:
.....
....
....
ret

nichtgleich:
....
....
...
ret

Autor: Marco Haufe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Fritz

genau Fritz ! Trampel ruhig auf den Basic-Schlipsen rum :-)
Seit Commodore 64 programmiere ich in Basic, habe inzwische viele
Dialekte gelernt, und auch wieder vergessen. Inzwischen fahre ich auf
Bascom voll auf µC-Basis ab und für PC auf Visual-B 6.0.
Zustande bringt man da auch was. Nichts desto trotz kriege ich aber
auch auf allen Vierend kriechend noch was in Asm hin... :-)

Bye und VG MArco

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.