0
저는 ASM을 처음 접했습니다. 나는 ARCH 리눅스 64 비트를 실행하고 compiule 다음 명령을 사용하여 모든 것이 원활하게 실행 해요 : 나는 (소수로) 사용자의 입력을 복용하고인텔 ASM EAX에 추가
nasm -f elf32 -o file.o file.asm
ld -s -m elf_i386 -o file file.o
나는 단순히 그것을 두 배로합니다. 그러나, 내가 사용할 때 :
add eax, eax
나는 아무 것도 얻지 못한다. 나는 그 다음 시도했다 :
add eax, 1
어느 것이 eax에 1을 더해야하는지. 그러나 이것은 메모리 주소에 1을 더합니다. 내 .bss 섹션에서 10 바이트를 예약했습니다.
나는 "1234"은으로 출력한다 입력 "234"반대 (1 바이트를 이동) "1235"
.bss라고 섹션 :
i: resd
j: resd 10
전체 문 :
mov eax, 3 ;syscall
mov ebx, 2 ;syscall
mov ecx, i ;input variable
mov edx, 10 ;length of 'i'
int 0x80 ;kernel call
mov eax, i ;moving i into eax
add eax, 0x1 ;adding 1 to eax
mov [j], eax ;moving eax into j