어셈블리 프로그래밍의 기본 사항을 다시 배우고 있습니다. 나는 천천히 Assembly Language Step-by-Step: Programming with Linux을 통해 내 길을 가고있다.NASM 어셈블리 프로그래밍 - 어드레스 증분
저는 NASM을 사용하는 64 비트 Slackware 머신 (x86-x64)에서 작업하고 있습니다.
나는 주소를 증가시키는 것이 무엇을 의미하는지 혼란 스럽다. 내 bss
섹션에는 Buffer resb 4096
버퍼가 있습니다. text
섹션에서 나는 esi
에 주소를 할당 :
mov esi, Buffer
나중에, I
inc esi
. 이것은
esi
을 다음 바이트 오프셋으로 전진하는 것으로 나타납니다. 나는 조금 놀랐다 - 나는 그것이 32 비트 레지스터이기 때문에
esi
이 4 바이트를 앞당길 것으로 예상했다.
주소를 증가 시키면 한 번에 한 바이트 씩 이동한다고 가정 할 수 있습니까? 내가 add esi, 4
을 사용하여 32 비트를 향상시킬 수 있습니까?
32 비트 레지스터를 채울 때 4 바이트를 명시 적으로 요청해야합니까? mov eax, DWORD [esi]
과 같은 것?
실제로 내가하는 일이 훨씬 쉬워졌습니다. 나는 한 번에 4 바이트를 처리해야 할 것이라고 염려했다. –