Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Создание двумерного массива из вводмой


Автор: Pakshin A. S. 3.5.2007, 21:58
Вводится через пробел последовальность чсел длины не более 10. Признак конца ввода - <Enter>. Требудет реализовать двумерный массив.
Пример ввода:
-> 1
00000000001
-> 2
00000000001
00000000002
-> 33
00000000001
00000000002
00000000033
-4
00000000001
00000000002
00000000033
10000000004

Вот что у меня получилось написать:
Код

.data
    hStdOut   dd ?
    hStdIn    dd ?
    mes       db "Enter elements (separator - space): ",0Dh,0Ah
    kol_chars dd 1
    stroka    dw 1
    massiv    dw ?
    buf          dw ?
    count1      db ?
    
    len          db ?
    
    ten          dw 10
    
    i          dw 0
...
    mov    esi, 0
    mov        edi, 10
    mov        len, 0
    while1:
        invoke    ReadConsole, hStdIn, offset stroka, 1, offset kol_chars, 0 ; получили символ
        
        cmp        stroka, 13
        je        end_insert ; окончание ввода - <Enter>
        
        cmp        stroka, "-" ; проверка на отрицательность
        jne        insert
        mov        ax, 0;
        cmp        massiv[esi], ax
        jne        error ; ошибка - не верный ввод
        mov        ax, 1
        mov        massiv[esi], ax
        
        insert:
            cmp    stroka, " "
            jne        insert_value
            next_value: ; число сформировано
                mov        ebx, 1
                mov        ax, 0
                ; заполнение нулями начала строки
                while2:
                    mov        massiv[esi+ebx], ax
                    inc        ebx
                    cmp        ebx, edi
                    jb        while2
                ; переход к следующей строке
                inc        len
                inc        i
                movzx    eax, i
                mul        ten
                mov        esi, eax
                mov        edi, 10
                jmp        while1
            insert_value: ; формирование числа
                ; проверка корректности цифры
                cmp        stroka, "0"
                jb        error
                cmp        stroka, "7"
                ja        error
                ; добавление корректной цифры
                ;dec        edi
                mov        ebx, edi
                ; осуществление сдвига влево
                while3:
                    cmp        ebx, 10
                    jae        end_while3
                    mov        ax, massiv[esi+ebx+1]
                    mov        massiv[esi+ebx], ax
                    inc        ebx
                    jmp        while3
                end_while3:
                dec        edi;
                lea        ecx, stroka
                mov        ax, [ecx]
                mov        massiv[esi+10], ax
                
                ;invoke    WriteConsole, hStdOut, offset stroka, sizeof stroka, offset kol_chars, 0    
                
                ;xor        ecx, ecx
                ;wl:
                ;    mov        ax,    massiv[esi+ecx]
                ;    mov        buf, ax
                ;    invoke    WriteConsole, hStdOut, offset buf, sizeof buf, offset kol_chars, 0
                ;    inc        ecx
                ;    cmp        ecx, 10
                ;    jbe        wl
                
                jmp        while1
    end_insert:    


Но результат почему-то от вводимой последоватльностит не меняется... Т. е. работае ен верно... ПОмогите найти ошибку...

Спасибо за помощь...

Автор: Akina 3.5.2007, 22:47
Цитата(Pakshin A. S. @  3.5.2007,  22:58 Найти цитируемый пост)
Пример ввода:

ага... теперь объясни, что в нем двумерного...

Автор: Pakshin A. S. 3.5.2007, 22:56
Вводится строка:
1 2 33 -4

после работы алгоритма у нас формируется массив:
0000000000100000000002000000000331000000004

который можно воспринимать как двумерный массив, строки которого - введенные числа...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)