Добрый вечер, я пытаюсь перевести этот код шахты от C до сборки IA32:Fillin char массив с символами большего массива | @ASSEMBLY IA32
int i=0;
char s[3]; char c[n];
for(i=0;i<3;i++){
s[i]=c[i];
}
п является символом, который принимает значение от пользователя. К тому времени, когда это «для», он выполняет «c», уже заполнен символами. Я хочу, как вы можете видеть, заполнить «s» тремя первыми элементами «c». Я перевел этот код сборки, как это:
.data
is: .asciz "%s"
id: .asciz "%d"
.bss
.comm c,500,1
.comm s,500,1
.comm n,4,4
.global main
main:
#asking for string to fill "c"
pushl $c
pushl $is
call scanf
addl $8,%esp
#asking for integer to know how long is c
pushl $n
pushl $id
call scanf
addl $8,%esp
movl $0,%eax
for:
cmpl $3,%eax
jge endfor
movb c(%eax),%cl
movb %cl,s(%eax)
incl %eax
jmp for
endfor:
movl $0,%eax
pushl %eax
pushl $s
pushl $is
call printf
addl $8,%ebp
popl %eax
Дело в том, когда я исполняю этот код он не печатает вообще ничего, это как «S» массиву он пустой, я попробовал несколько вещей, и ничего не имеет работал до сих пор. Любой герой сборки, чтобы дать мне руку?
:-) Спасибо!
Почему вы не используете компилятор C для справки? – Michas
Я пробовал с помощью онлайн-дизассемблера, но код не для человека (меня), чтобы понять его, совершенно странно. :( –
Использовать компилятор C для перевода кода C на сборку. – Michas