실행환경
- cpu : 인텔계열(64bit)
- 컴파일러 : nasm
- 리눅스 : ubuntu 16.04 LTS
설치방법
- sudo apt-get install nasm
컴파일
- nasm -f elf64 파일명.asm -o 파일명.o --> 목적파일을 만든다.
- ld 파일명.o -o 파일명 --> 실행파일을 만든다.
문제 : 세 개의 값을 입력한 후 합계와 몫과 나머지 몫을 출력하시오.
test2.asm
section .data
first db "frist : "
len1 equ $ -first
second db "second : "
len2 equ $ -second
third db "third : "
len3 equ $ -third
newLine db 0x0a
total db "total : "
len4 equ $ -total
section .bss
num1 resb 1
num2 resb 1
num3 resb 1
temp resb 1
share resb 1
rem resb 1
sum 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:
call _input
call _add
call _div
call _exit
_add:
mov al,[num1]
sub al,'0'
mov bl,[num2]
sub bl,'0'
mov cl,[num3]
sub cl,'0'
add al,bl
add al,cl
mov [sum],al
mov bl,10
div bl
add al,'0'
add ah,'0'
mov [share],al
mov [rem],ah
cmp al,'0'
je _one
write share,1
write rem,1
write newLine,1
ret
_one :
write rem,1
write newLine,1
ret
_input:
write first,len1
read num1,1
read temp,1
write second,len2
read num2,1
read temp,1
write third,len3
read num3,1
read temp,1
ret
_div:
mov al,[sum]
mov bl,3
div bl
add al,'0'
add ah,'0'
mov [share],al
mov [rem],ah
write share,1
write newLine,1
write rem,1
write newLine,1
ret
_exit:
mov eax,1
int 0x80
'Programming Language > Assembly' 카테고리의 다른 글
[Assembly] 어셈블리 Test4 (0) | 2016.12.04 |
---|---|
[Assembly] 어셈블리 Test3 (0) | 2016.12.04 |
[Assembly] 어셈블리 Test1 (0) | 2016.12.04 |
[Assembly] 매크로를 이용한 구구단 출력 (0) | 2016.12.04 |
[Assembly] 구구단 출력 (0) | 2016.12.04 |