실행환경
- cpu : 인텔계열(64bit)
- 컴파일러 : nasm
- 리눅스 : ubuntu 16.04 LTS
설치방법
- sudo apt-get install nasm
컴파일
- nasm -f elf64 파일명.asm -o 파일명.o --> 목적파일을 만든다.
- ld 파일명.o -o 파일명 --> 실행파일을 만든다.
문제 : 사용자가 입력하는 정수를 계속 더한다.
만약 0을 입력하면 입력된 합의 결과 및 평균를 출력하고 프로그램 종료
정수 입력 : 1
정수 입력 : 3
정수 입력 : 0
합계 = 4
평균 = 2
test18.asm
section .data
inp db '정수 입력 : '
li equ $ -inp
s db '합계 = '
ls equ $ -s
a db '평균 = '
la equ $ -a
ent db 0x0A
section .bss
num1 resb 1
num2 resb 1
sum resb 2
avr resb 2
t resb 1
section .text
global _start
%macro write 2
mov eax,4
mov ebx,1
mov ecx,%1
mov edx,%2
int 0x80
%endmacro
%macro read 2
mov eax,3
mov ebx,1
mov ecx,%1
mov edx,%2
int 0x80
%endmacro
_start:
mov al,'0'
mov [sum],al
mov rcx,0
_lp:
inc rcx
push rcx
write inp,li
read num1,1
read t,1
mov bl,[num1]
sub bl,'0'
mov al,[sum]
sub al,'0'
cmp bl,0
je _print
add al,bl
add al,'0'
mov [sum],al
pop rcx
jmp _lp
_print:
pop rcx
dec cl
div cl
add al,'0'
mov [avr],al
write s,ls
write sum,2
write ent,1
write a,la
write avr,2
write ent,1
_exit:
mov eax,1
int 0x80
'Programming Language > Assembly' 카테고리의 다른 글
[Assembly] 어셈블리 Test20 (0) | 2016.12.05 |
---|---|
[Assembly] 어셈블리 Test19 (0) | 2016.12.05 |
[Assembly] 어셈블리 Test17 (0) | 2016.12.05 |
[Assembly] 어셈블리 Test16 (0) | 2016.12.05 |
[Assembly] 어셈블리 Test15 (0) | 2016.12.05 |