Правильно добавление и чтение массивов x86 MASM - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь получить результаты вычислений в массиве, а затем сразу прочитать весь массив.У меня есть все расчеты:

include Irvine32.inc

.data
oCount DWORD 1
iCount DWORD ?
lower DWORD 0
results DWORD 25 DUP(?)
.code
main PROC
mov ebx,1
mov ecx,25
L1:
    mov oCount, ecx             ;Store the Outer Count
    mov ecx, ebx                ;Put the inner count in the limit register
    mov iCount, ebx             ;Put the inner count in the iCount variable
    mov ebx, 0                  ;reset ebx register to 0
    L2:
        add ebx,iCount          ;adds the current value(in iCount)to the total(ebx)
        Loop L2     
    mov eax, ebx                ;moves the upper to eax
    sub eax, lower              ;subtracts the lower from eax
    mov ebx, iCount

Так что здесь, в этой части, у меня есть правильное число на каждой итерации.Теперь мне нужно добавить значение из eax в ранее объявленный массив результатов

    mov results[ebx], eax

Логика, которую я пытаюсь использовать здесь (что неверно), заключается в том, что я добавлю eax к результатам, используя ebx какитератор.Я также попытался умножить ebx так, чтобы моя итерация была равна размеру DWORD в байтах, но безрезультатно.Мой первый вопрос - просто то, что мне здесь не хватает.Я почти уверен, что знаю, что я должен делать, но я просто не могу понять это в синтаксисе MASM

call WriteDec
    call crlf
    mov lower, eax
    mov ebx, iCount             ;Move iCount to ebx. This restores the innercount
    inc ebx                     ;Increase the inner count by one
    mov ecx, oCount             ;Put the outer count back in the loop counter
    Loop L1
mov eax, [results]
call WriteDec

На данный момент я просто тестируювывести одно из значений из массива, но, поскольку моя реализация массива определенно неверна, она не выведет то, что я хочу.Программа завершается:

call WaitMsg
invoke ExitProcess,0
main ENDP
END main
...