【发布时间】:2017-04-25 01:11:32
【问题描述】:
所以我正在处理一项任务,我在理解这种类型的代码中的数组时遇到了一些问题(请记住,我对这些东西的了解有限)。我的代码应该要求用户输入将放入 SDWORD 数组中的值的数量,然后创建一个让用户输入数字的过程。我在下面完成了向用户询问金额(保存在“计数”中)的部分,但我正在努力处理其他程序部分例如,如果他们输入 5,则使用下面的代码,那么我必须执行的程序将需要他们输入 5 个数字,这些数字将进入一个数组。
我面临的问题是我不确定如何实际设置阵列。它可以包含 2 到 12 个数字之间的任何数字,这就是我在下面的代码中设置比较的原因。例如,假设用户输入他们将输入 5 个数字,我将其设置为这样......
.data
array SDWORD 5
我遇到的问题是我不确定这是说数组将保存 5 个值还是数组中只有一个值是 5。我需要数组中的值等于“数数”。我在下面设置的“计数”是用户要输入的数量。
我显然也知道如何设置这样的程序......
EnterValues PROC
return
EnterValues ENDP
我只是不知道如何实现这样的东西。我在网上所做的所有研究只会让我更加困惑,而且我发现的所有示例都没有要求用户在实际输入任何数字之前输入数组中有多少个数字。我希望我所描述的有道理。任何关于我可能做的事情都会很棒!
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
============编辑===============
我想出了这个...
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
【问题讨论】:
标签: visual-studio-2010 assembly masm irvine32