실행환경
- cpu : 인텔계열(64bit)
- 컴파일러 : nasm
- 리눅스 : ubuntu 16.04 LTS
설치방법
- sudo apt-get install nasm
컴파일
- nasm -f elf64 파일명.asm -o 파일명.o --> 목적파일을 만든다.
- ld 파일명.o -o 파일명 --> 실행파일을 만든다.
문제 : 3개의 수를 입력한 후 최대값 최소값을 출력
test12.asm
section .data
n1 db 'num1 :'
ln1 equ $ -n1
n2 db 'num2 :'
ln2 equ $ -n2
n3 db 'num3 :'
ln3 equ $ -n3
ma db 'max :'
lma equ $ -ma
mi db 'min :'
lmi equ $ -mi
ent db 0x0A
section .bss
nu1 resb 2
nu2 resb 2
nu3 resb 2
max resb 2
min resb 2
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:
write n1,ln1
read nu1,2
write n2,ln2
read nu2,2
write n3,ln3
read nu3,2
mov al,[nu1]
mov bl,[nu2]
mov cl,[nu3]
cmp al,bl
jg _al
_bl:
cmp bl,cl
jg _bmax
mov [max],cl
jmp _min
_al:
cmp al,cl
jg _amax
mov [max],cl
jmp _min
_bmax:
mov [max],bl
jmp _min
_amax:
mov [max],al
jmp _min
_min:
cmp al,bl
jl _al2
_bl2:
cmp bl,cl
jl _bmin
mov [min],cl
jmp _print
_al2:
cmp al,cl
jl _amin
mov [min],cl
jmp _print
_amin:
mov [min],al
jmp _print
_bmin:
mov [min],bl
jmp _print
_print:
write ent,1
write ma,lma
write max,1
write ent,1
write mi,lmi
write min,1
write ent,1
_exit:
mov eax,1
int 0x80
'Programming Language > Assembly' 카테고리의 다른 글
[Assembly] 어셈블리 Test14 (0) | 2016.12.05 |
---|---|
[Assembly] 어셈블리 Test13 (0) | 2016.12.05 |
[Assembly] 어셈블리 Test11 (0) | 2016.12.05 |
[Assembly] 어셈블리 Test10 (0) | 2016.12.05 |
[Assembly] 어셈블리 Test9 (0) | 2016.12.05 |