Ich habe einige Probleme mit meiner Ausgabe ... Ich glaube, ich habe einige Probleme mit meinem Array. Immer noch neu in der Montage. Die Aufgabe besteht darin, ein Assembly-Programm zu entwerfen, das ein Dialogfeld verwendet, um den Benutzer nach einer Nummer zu fragen. Diese Nummern werden in einem Array gespeichert. Es wird eine Ausgabenachricht geben, die folgendes anzeigt: Summe der eingegebenen Zahlen, wieviele Zahlen eingegeben wurden (nicht -9999, um das Programm zu beenden), der Durchschnitt der Zahlen und die Anzahl der Array-Einträge, die größer sind als oder gleich dem Durchschnittswert. Alle Hilfe wird geschätzt! Hier ist, was ich habe:Arrays in Assembly
.DATA
numArray DWORD ?
numElts DWORD 100
num DWORD ?
exitNum DWORD -9999
prompt BYTE "Enter a number", 0
string BYTE 40 DUP (?)
resultLbl BYTE "Results", 0
sum BYTE 11 DUP(?), " is the sum.", 0dh, 0ah
;numEntered BYTE 11 DUP(?), " numbers were entered."
avg BYTE 11 DUP(?), " is the average."
count BYTE 11 DUP(?), " is the number of entries that are >= the average."
.CODE
_MainProc PROC
mov eax, 0 ; sum := 0
lea ebx, numArray ; get address of nbrArray
LOOP1: input prompt, string, 40 ; read ASCII characters
atod string ; convert to integer
mov num, eax ; store in memory
mov ecx, numElts ; count := nbrElts
cmp exitNum, eax
je QUIT ; quit if -9999
add eax, [ebx] ; add number to sum
add ebx, 4 ; get address of next array elt
add ecx, 1 ; add one for count
loop LOOP1 ; repeat nbrElts times
cdq ; extend sum to quadword
idiv numElts ; calculate average
dtoa avg, ebx ; convert to ASCII characters
dtoa count, ecx
dtoa sum, eax
QUIT:
output resultLbl, sum, avg, count
ret
_MainProc ENDP
END ; end of source code
ist 'atod' eine benutzerdefinierte Funktion? weil "atod" generell zu "double" konvertiert, nicht zu ganzen Zahlen, also zu "atol". Auch die Beschreibung Ihres Problems würde Ihnen sehr helfen. – Necrolis