실행환경
- 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
'Programming Language > Assembly' 카테고리의 다른 글
[Assembly] 숫자 나누기(몫과 나머지 출력) (0) | 2016.12.04 |
---|---|
[Assembly] 사칙연산 프로그램 (0) | 2016.12.04 |
[Assembly] 숫자 더하기 (0) | 2016.12.04 |
[Assembly] 짝수 홀수 판별2 (0) | 2016.12.04 |
[Assembly] 짝수 홀수 판별1 (0) | 2016.12.04 |