So arbeite ich an einer Aufgabe und ich habe einige Probleme, Arrays in dieser Art von Code zu verstehen (bedenken Sie, dass mein Wissen über dieses Zeug begrenzt ist). Mein Code soll den Benutzer bitten, die Anzahl der Werte einzugeben, die in ein Array von SDWORDs eingegeben werden, und dann eine Prozedur erstellen, bei der der Benutzer die Zahlen eingeben muß. Ich habe den Teil unten getan, der den Benutzer nach dem Betrag fragt (gespeichert in "count"), aber ich kämpfe mit dem anderen Prozedurteil Zum Beispiel mit meinem Code unten, wenn sie 5 eingeben, dann würde die Prozedur, die ich machen muss, sie erfordern um 5 Zahlen einzugeben, die in ein Array eingehen würden.Array erstellen und Werte hinzufügen
Das Problem, mit dem ich konfrontiert bin, ist, dass ich nicht sicher bin, wie man das Array tatsächlich aufstellt. Es kann irgendwo zwischen 2 und 12 Zahlen enthalten, weshalb ich den Vergleich im folgenden Code eingerichtet habe. Nehmen wir zum Beispiel sagen, dass die Benutzereingaben, die sie fünf Zahlen eingeben werden, und ich es gesetzt, wie dies oben ...
.data
array SDWORD 5
das Problem, das ich habe ist, dass ich nicht sicher bin, ob das zu sagen ist das Array halte 5 Werte oder wenn nur ein Wert im Array 5 ist. Ich brauche die Anzahl der Werte im Array, die gleich "count" sein sollen. "count", wie ich unten eingerichtet habe, ist der Betrag, den der Benutzer eingeben wird.
auch offensichtlich weiß ich, wie das Verfahren wie folgt einzurichten ...
EnterValues PROC
return
EnterValues ENDP
Ich weiß nur nicht, wie so etwas zu realisieren. All die Forschung, die ich online getan habe, verwirrte mich nur mehr und keines der Beispiele, die ich gefunden habe, frage den Benutzer, wie viele Zahlen das Array sein werden, bevor sie physikalisch irgendwelche Zahlen eingeben. Ich hoffe, dass das, was ich beschrieben habe, Sinn macht. Jeder Beitrag zu dem, was ich tun könnte, wäre großartig!
INCLUDE Irvine32.inc
.data
count SDWORD ?
prompt1 BYTE "Enter the number of values to sort",0
prompt2 BYTE "Error. The number must be between 2 and 12",0
.code
Error PROC
mov edx, OFFSET prompt2
call WriteString
exit ; exit ends program after error occures
Error ENDP
main PROC
mov edx, OFFSET prompt1
call WriteString ; prints out prompt1
call ReadInt
mov count, eax ; save returned value from eax to count
cmp count, 12
jle Loop1 ; If count is less than or equal to 12 jump to Loop1, otherwise continue with Error procedure
call Error ; performs Error procedure which will end the program
Loop1: cmp count, 2
jge Loop2 ; If count is greater than or equal to 2 jump to Loop2, otherwise continue with Error procedure
call Error ; performs Error procedure which will end the program
Loop2: exit
main ENDP
END main
============ EDIT ==============
Ich kam auf diese ...
EnterValues PROC
mov ecx, count
mov edx, 0
Loop3:
mov eax, ArrayOfInputs[edx * 4]
call WriteInt
call CrLf
inc edx
dec ecx
jnz Loop3
ret
EnterValues ENDP
Vielen Dank! Ich habe mir etwas einfallen lassen und habe es am Ende der Frage hinzugefügt. Würde es dir etwas ausmachen, einen Blick darauf zu werfen und mich wissen zu lassen, ob es Sinn macht? Vielen Dank! –
Auch ich wollte, dass Sie wissen, dass ich den Namen von Array in ArrayOfInputs geändert habe, deshalb ist es anders –
@ V.Valdes: Ja, das macht Sinn und zeigt guten Stil: in eine Prozedur ausgeleitet, eine klare Struktur (keine Spaghetti), aussagekräftige Symbolnamen, gut formatiert, – rkhb