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 =)
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.