我正在创建一个程序集程序,它将使用用户输入的10个元素,并使用排列将它们分类为8,3,5,9,2,6,0,4,1,7。该程序正在运行,但我的问题是它不适用于两位数字。如果我输入1,2,3,4,5,6,7,8,9,0 ..它会给我正确的输出。但如果我输入类似12,9,54,20,3,38,72,17,91,25的东西,它将不会给我91,20,38,25,54,72,12的所需输出, 3,9,17 ..它根本不会给我任何输出。造成这种情况的原因是什么?
这是我的代码
INCLUDE Irvine32.inc
.data
welcome BYTE "Welcome! This program permutates an array of size 10.", 0Ah, 0Dh, 0
message1 BYTE "Please enter the 10 elements of your array:", 0Ah, 0Dh, 0
message2 BYTE "The permutated array is: ", 0Ah, 0Dh, 0
permutation DWORD 8, 3, 5, 9, 2, 6, 0, 4, 1, 7
array DWORD 10 DUP(?)
.code
main PROC
MOV EDX, OFFSET welcome
call WriteString
MOV EDX, OFFSET message1
call WriteString
MOV ESI, OFFSET array
MOV ECX, 10
L1:
call ReadInt
MOV [ESI], EAX
ADD ESI, TYPE array
LOOP L1
MOV EDI, OFFSET permutation
MOV ESI, OFFSET array
MOV ECX, 10
L2:
MOV EAX, [EDI]
PUSH ECX
MOV ECX, 10
L3:
CMP EAX, [ESI]
JE output
ADD ESI, TYPE array
LOOP L3
back:
ADD EDI, TYPE permutation
POP ECX
LOOP L2
JMP quit
output:
MOV EAX, [ESI]
call WriteInt
MOV ESI, OFFSET array
JMP back
quit:
exit
main ENDP
END main