MASM Array Permutation仅接受一位数字

时间:2016-03-15 20:17:34

标签: assembly masm irvine32

我正在创建一个程序集程序,它将使用用户输入的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

0 个答案:

没有答案