Моя программа будет получать номера в виде ввода от пользователя, используя массив, и будет печатать номера на мониторе. SO ожидает ввода и вывода моей программы выглядит следующим образом:Array Input, Output
i/p: 1 2 3 4
o/p: 1 2 3 4
Но моя программа дает выход этим способом, исключая номер:
o/p: 4 3 2
Моя программа выглядит следующим образом:
section .data
msg db "%d"
four dd 4
msga db "%d",10,0
section .bss
arr resd 4
section .text
global main
extern printf,scanf
main:
xor ecx,ecx
lp:
mov ebx,arr
mov eax,ecx
mul dword[four]
add ebx,eax
pusha
push ebx
push msg
call scanf
add esp,8
popa
inc ecx
cmp ecx,4
jnz lp
mov ecx,3
lp1:
mov ebx,arr
mov eax,ecx
mul dword[four]
add ebx,eax
pusha
push dword[ebx]
push msga
call printf
add esp,8
popa
dec ecx
jg lp1
Вы посоветуете мне в этой программе? Я использую Ubuntu 11.04 Thanx заранее
Антон Коваленко: Дорогой сэр, я попытался исправить код, как вы предлагаете. (PLS см. Повторно отредактированный код выше). Но выход по-прежнему показывает 4 3 2. – sabu
Что так сложно в отношении ** копирования ** кода из части 1 в часть 2, ** дословно **, без каких-либо ** творческих размышлений **? Вы инициализируете ECX с 3, затем вы уменьшаете ecx и 'dec ecx; jg..' примерно эквивалентен вашей прежней «петле». Вместо этого вы должны начать с 'xor ecx, ecx', затем' inc ecx', затем 'cmp ecx, 4' и' jne lp1' - ** точно **, как вы уже это делали в первом цикле. –
Спасибо, сэр. Оно работает. Я редактирую код выше. – sabu