В настоящее время я пытаюсь изучить сборку, и одна из заданий, которую я даю, - это ввести целые числа ввода и вставить эти числа в массив. После того, как массив имеет 7 целых чисел, я пройду через массив и распечатаю номера. Тем не менее, я сейчас зациклился на том, как вставлять числа в массив. Вот код, я прямо сейчас:Неисправность вставки вещей в массив в сборке
.DATA
inputIntMessage BYTE "Enter an integer: ", 0
inputStringMessage BYTE "Enter a string: ", 0
intArray DWORD 0,0,0,0,0,0,0
intCounter DWORD 0
user_input DWORD ?
.CODE
main PROC
mov eax, intCounter
mov edx, 0
top:
cmp eax, 7
je final1
jl L1
L1: intInput inputIntMessage, user_input
mov ebx, user_input
mov intArray[edx], ebx ;This is where I think the problem is.
add edx, 4
inc eax
jmp top
final1:
mov ecx, 0
mov edx, 0
printarrayloop:
cmp edx,7
jl L2
je next
L2: intOutput intArray[ecx]
add ecx, 4
inc edx
next:
next:
просто переходит к следующей задаче; не имеет значения для этой вставки в проблему массива. Я думаю, что я должен использовать смещение массива, поэтому я могу получить доступ к адресу каждого элемента в массиве и напрямую изменить его, но я не знаю, как это сделать. Может ли кто-нибудь указать мне в правильном направлении?
EDIT: Когда я запустил программу, окно предложит пользователю ввести целое число 7 раз (по назначению), а затем распечатать первый введенный пользователем номер. Однако в окне должно быть указано все введенные пользователем номера.
Вы ступенчатой через код в отладчике, чтобы посмотреть, что происходит? –
В чем смысл 'jl L1; L1: '? Сохраняет ли макрос 'intInput' то, что находится в' eax'? –
Да, но, к сожалению, я не мог получить от него никакой информации. Все переменные растут правильно, все регистры - это то, что они должны быть. – MistFTW