Assemblerproblem

Gast #1132857
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 =)
Angehängte Dateien:
#1133120
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren