본문 바로가기

Programming Language/Assembly

[Assembly] 배열선언 및 숫자더하기

실행환경

- cpu : 인텔계열(64bit)

- 컴파일러 : nasm

- 리눅스 : ubuntu 16.04 LTS


설치방법

sudo apt-get install nasm


컴파일

- nasm -f elf64 파일명.asm -o 파일명.o  --> 목적파일을 만든다.

- ld 파일명.o -o 파일명  --> 실행파일을 만든다.


array.asm

section .bss

  result resb 1

section .data

x: db 2,3,4

end db 0ah

section .text

global _start


_start:

;배열 정보를 가져와서 함계를 출력해 본다.

;초기화 부분

mov eax,3 ;값이 3개가 들어있으니 3번 돌리겠다라고 가정한다.

mov ebx,0 ;값을 더해주기 위한 공간 

mov ecx,x ;x가 가르키는 것은? --> 배열

;값을 가져올수 있도록 3번정도 무언가를 통해 돌아야 된다.

for:

add ebx,[ecx] ;x 배열에 있는 처음 값을 꺼내왔다. ebx에 더해주었다 , 초기화부분에서 ebx에 값을 넣겠다고 선언했으므로 값이 들어간다.

add ecx,1

dec eax

jnz for ;바로 전줄만 판별


add ebx,'0'

mov [result],ebx


mov eax,4

mov ebx,1

mov ecx,result

mov edx,1

int 80h


mov eax,4

mov ebx,1

mov ecx,end

mov edx,1

int 80h


mov eax,1

int 80h