我正在进行一项任务,用户输入他们将输入的值的数量输入到数组中。在所有这些之后,我需要做一个冒泡排序,将输入的数字从最小到最大。
令人困惑的部分是它说"冒泡排序的内循环是在一个程序"。我甚至不知道如何开始如何做到这一点,更不用说创建内部和外部循环了。我在网上找到的所有例子都使用了一些" esi"在我的代码中我没有的东西或东西没有内部和外部循环。我只是试图让这个开始,所以如果有人有任何可以帮助我或让我走上正轨的东西,我将不胜感激。我在下面提到了我的代码以及至少我认为它的解释。
让我简要介绍一下我到目前为止的情况......第一个程序只显示错误信息并结束程序。它被称为" count"不在正确的范围内。第二个过程是用户输入" count"数字输入" values数组"。最后,主要程序是我让用户输入" count"数字和我验证它在正确的范围(2到12)或显示错误,程序结束。主程序还调用输入数字的程序。
INCLUDE Irvine32.inc
.data
count SDWORD ?
values SDWORD 12 DUP (?)
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
Error ENDP
EnterValues PROC
mov ecx, count
mov edx, 0
Loop3:
mov eax, values[edx * 4]
call WriteInt
call CrLf
inc edx
dec ecx
jnz Loop3
ret
EnterValues 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: call EnterValues
exit
main ENDP
END main