title image


Smiley Re: Assembler-Programmierung
Hallo!



Folgendes Programm hatte ich zu realisieren:



Beginnend mit -100*5 soll sukkzessive mit abnehmendem 2. Faktor multipliziert werden, d.h. -100 * 5, -100 * 4,... . Das Programm soll anhalten, sobald das Ergebnis positiv wird.



Dabei ist folgende Bildschirmanzeige gefordert:



Das Ergebnis ist negativ: -00500

Das Ergebnis ist negativ: -00400

Das Ergebnis ist negativ: -00300

Das Ergebnis ist negativ: -00200

Das Ergebnis ist negativ: -00100



Hilfestellungen:



Der Befehl "JS Label" verzweigt in Abhängigkeit des Vorzeichens (Signum-Flag).



Zur Zahlendarstellung wird zweckmäßigerweise der Divisionsbefehl eingesetzt.



Hier ist mein unvollständiges Programm:



.MODEL SMALL

.STACK 100h

.DATA

AUSGABE LABEL BYTE

DB 'Das Ergebnis ist negativ: -'

ERGEBNIS DB '00000', 13, 10, '$'



.CODE

Start: mov ax, @data

mov ds, ax





mov cl, 5

mov bx, 10



M1: mov ax, -100

imul cl

neg ax

add ax, 0 ; Dummy Signum Flag

jns Ende ; wenn SF nicht gesetzt springe nach Ende



dec cl

mov dx, 0

div bx

mov ah, 0

add ax, 3030h

mov [ERGEBNIS+2], al





mov ah, 9

mov dx, OFFSET AUSGABE

int 21h







Ende: mov ah, 4Ch

int 21h

END Start



Es funktioniert noch nicht. Ich glaube auch, dass der NEG-Befehl an der falschen Stelle steht, aber er muss auf alle Fälle hier rein. Ist das Datensegment eigentlich so richtig oder kann ich die Ausgabe auch anders schreiben?



Vielen Dank!



MfG Sue





geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: