어셈블리어 프로그래밍 helloword
안녕 하세요 준P입니다.
오늘은 리눅스에서 어셈블리어로 프로그래밍을 해 보도록 합시다.
그러면 일단 리눅스에 nasm이 설치되어있어야함니다.
sudo apt-get install nasm
으로 설치해 줍시다.
자 nasm이 설치 되엇으면 vim으로 asm.asm을 만들어줍시다.
그리고 나서
section .data
;여기에는 데이터를 넣는 곳 입니다.
msg db "hello world",0x0A
; hello world 라는 단어와 새줄 이라는 16진수 코드
section .text
global _start
_start
mov eax,4 ; write의 시스템 콜 번호
mov ebx,1 ; write의 표준 출력은 1번이다.
mov ecx,msg ; write의 두 번쨰 인자에 메세지 주소 저장
mov edx,12 ; write 의 세 번쨰 인자에 문자열 길이 저장
int 0x80 ; 실행
mov eax,1 ; exit의 시스템 콜 번호
mov ebx,0 ; exit의 정상적인 종료
int 0x80 ; 실행
자 이제 작성이 끝낫다면
컴파일을 해야죠
하지만 그전에 자신의 리눅스 시스템이 32비트인지 64비트인지 알아야 합니다.
uname -p
이 명령어로 x86이 나왓다면 32비트인것이고 x86_64라면 64비트 인 것 입니다.
참고로 저는 64비트 입니다.
자 이제 자신이 몇 비트 인지 알았으니
컴파일을 해봅시다.
32비트라면 nasm -f elf asm.asm
64비트라면 nasm -f elf64 asm.asm
nasm -f elf asm.asm ;이 명령어 후에는 asm.o가 만들어 짐니다.
ld asm.o ;실행 파일로 만들어 줌니다.
./a.out ;실행 입니다.
저 위 에러를 해석 하면
경고 : 레이블을 혼자 선에 콜론없이하는 것은 오류가있을 수 있습니다
라고 하는데요 주석 떄문 입니다. 간단히 무시 하시면 됨니다.
네 정상적으로 컴파일이 되엇습니다.
'Development > Assembly' 카테고리의 다른 글
어셈블리 프로그래밍 (0) | 2015.06.21 |
---|---|
리눅스 syscall table for x86_64 (0) | 2014.09.18 |
리눅스 system table for x86 (0) | 2014.09.14 |