320x100
사용환경
OS: Ubuntu 20.04
어셈블리어 설치
먼저 Assembler를 설치한다.
NASM(Netwide Asembler)는 x86-64 아키텍처용으로 설계된 에섬블리어로 오픈소스이다.
sudo apt-get install nasm
소스코드 작성
Hello world를 출력하는 어셈블리어 코드 작성
section .data ; 데이터 섹션 정의.
text db "Hello World", 10 ; "Hellow World"문자열을 저장하고 뒤의 숫자 10은 개행문자의 ASCII code이다.
section .text ; 코드섹션 정의.
global _start ; _start 레이블을 전역으로 선언한다. 이는 프로그램의 진입점(main 함수와 같은 역할)이다.
_start:
mov rax, 1 ; rax 레지스터에 1을 설정한다. 1은 write이다.
mov rdi, 1 ; rdi 레지스터에 1을 설정한다. 1은 표준 출력이다.
mov rsi, text ; rsi 레지스터에 text 주소를 이동한다. (Hello World)
mov rdx, 14 ; rdx레지스터에 14를 설정한다. "Hello World"와 개행문자의 총 byte 수이다.
syscall ; 시스템을 호출한다. write 시스템이 호출된다.
mov rax, 60 ; 레지스터에 60을 설정한다. 60은 exit(프로그램 종료)이다.
mov rdi, 0 ; rdi 레지스터에 0을 설정한다. 0은 종료 상태 코드이다.
syscall ; 시스템을 호출한다. exit 시스템이 호출된다.
실행
먼저 hello.o라는 목적파일을 생성한 뒤 목적파일을 링킹한다.
그렇게 생성된 hello라는 실행파일을 실행해본다.
nasm -f elf64 hello.asm -o hello.o
ld hello.o -o hello
./hello
반응형
'프로그래밍 > Assembler' 카테고리의 다른 글
[어셈블리어] 2. x86_64 scanf (0) | 2024.06.09 |
---|
댓글