Я пытаюсь переместить символы, которые не являются цифрами, из массива char «буфер» в новый массив «clean».«буфер» создается с помощью функции scanf.
.section bss
buffer:
.skip 20
clean:
.skip 20
...
if_digit:
movl $0, %ebx
cleanloop:
movl $0, %ecx
movb buffer(%ebx), %cl
pushl %ecx
call isdigit #nonzero if digit.
addl $4, %esp
incl %ebx
cmpl $0, %eax
jne clean_buffer #jmp to clean_buffer if digit
jmp end_cleanloop
clean_buffer:
movb %cl, clean(%ebx)
jmp cleanloop
end_cleanloop:
movb $0, clean(%ebx) #add null character at the end.
pushl $clean
call atoi #stores atoi value at eax
addl $4, %esp
subl $4, iIndex
pushl %eax
jmp input
Что сомнительно в этих двух строках.
movb buffer(%ebx), %cl
vs
movb %cl, clean(%ebx)
В первой строке хранится определенный символ в буфере для cl.Однако вторая строка не предпринимает никаких действий.Даже когда я проверил с помощью GDB, никакое значение не было сохранено в чистой.
Почему инструкция mov работает в первой строке, а не во второй?