mikrocontroller.net

Forum: PC-Programmierung Assemblerproblem


Autor: Auli (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

hab mal eine kleine Aufgabe angehängt, hier ist mein Lösungsansatz.

mov AX,BX
CMP [BX],1000H
Schleife:
JNAE Ende
CMP [BX], 5000H
JNAE Kleiner
SUB [BX], 02A5H
JMP Ende
Kleiner:
ADD [BX], 0CB3H
Ende:
MOV BX, BX+2
mov BX, AX
loop Schleife
RET

Passt das soweit?
Danke schonmal für eure Antworten =)

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du vergleichst nur den ersten Wert mit 0x1000, alle nachfolgenden aber 
nicht.

Das Label Schleife sollte daher besser in eine andere Zeile.

Desweiteren erkenne ich nicht, daß du (dezimal) 1000 Messwerte in einer 
Schleife bearbeitest, da ist zwar sowas wie eine Schleife, aber wo ist 
das Abbruchkriterium?

Autor: G. O. (aminox86)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
x86-Assembler, wo wird so´was denn noch verlangt? Welcher 
Assembler(Compiler) ist es denn?
Also gut, zum Programmfragment.
Neben den etwas gewagten Vergleichkonstrukten sind zwei Punkte nicht in 
Ordnung.

1) Das Schleifenabbruchkriterium fehlt (wurde schon erwähnt)
2) Die Indizierung der Tabelle funktioniert so wie dargestellt nicht.

Zu 1)Die Schleife ist mit dem loop-Befehl, der cx auf NULL prüft, 
abgeschlossen. Im vorliegenden Beispiel ist cx nicht initialisiert, die 
Anzahl der Schleifendurchläufe ist zufällig.
Zu 2)Gemäss Aufgabenstellung adressiert bx die Tabelle bzw zeigt bei 
Programmstart auf den Tabellenanfang. Die durch bx indizierten 
Tabelleneinträge sollen als Worte bearbeitet, ggf modifiziert und dann 
zurückgeschrieben werden. bx wird auf den nächsten Tabelleneintrag 
weitergeschaltet, dieser bearbeitet usw :
   .
   mov ax, word ptr[bx]        ;tabelleneintrag holen, typisiert
   .
   .                           ;weitere befehle
   mov word ptr[bx], ax        ;ax in tabelle zurückschreiben, typisiert
   inc bx                      ;bx+=2 wg.wortbreite
   inc bx                      ;
   .                           ;usw.
Diese Art der Tabellenbearbeitung setzt vorraus, dass bx nicht 
überlaufen kann, dh. die Tabelle muß sich am Beginn des Datensegments 
befinden.
mfg

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.