본문 바로가기

Programming Language/Assembly

[Assembly] 어셈블리 Test7

실행환경

- cpu : 인텔계열(64bit)

- 컴파일러 : nasm

- 리눅스 : ubuntu 16.04 LTS


설치방법

sudo apt-get install nasm


컴파일

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

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


문제 : 양의 정수를 입력한 후 짝수면 "even number" 홀수면 "odd number" 출력

test7.asm

section .data

first db 'Input : '

len1 equ $ -first

odd db 'odd number!'

len2 equ $ -odd

even db 'even number!'

len3 equ $ -even

newLine db 0x0a


section .bss

char1 resb 1

temp resb  1

rem 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:

write first,len1

read char1,1

read temp,1


mov al,[char1]

sub al,'0'


mov bl,2

div bl


mov [rem],ah


cmp ah,0

je _evenFunc

cmp ah,1

je _oddFunc


_evenFunc:

write even,len3

write newLine,1

jmp _exit


_oddFunc:

write odd,len2

write newLine,1

jmp _exit


_exit:

mov eax,1

int 0x80






'Programming Language > Assembly' 카테고리의 다른 글

[Assembly] 파일입출력  (0) 2016.12.05
[Assembly] 어셈블리 Test8  (0) 2016.12.04
[Assembly] 어셈블리 Test6  (0) 2016.12.04
[Assembly] 어셈블리 Test5  (0) 2016.12.04
[Assembly] 어셈블리 Test4  (0) 2016.12.04