Я пытаюсь получить результаты вычислений в массиве, а затем сразу прочитать весь массив.У меня есть все расчеты:
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