본문 바로가기

Programming Language/Assembly

[Assembly] 어셈블리 Test10

실행환경

- cpu : 인텔계열(64bit)

- 컴파일러 : nasm

- 리눅스 : ubuntu 16.04 LTS


설치방법

sudo apt-get install nasm


컴파일

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

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



문제 : 한 문자를 입력한 후 숫자이면 "number", 알파벳 대문자이면 "capital letter"

       소문자이면 "small letter", 기호이면 "symbol" 출력

       ex) 6 ->number


test10.asm

section .data


x db 'x :'


lx equ $ -x


n db 'number',0x0A


ln equ $ -n


b db 'capital letter',0x0A


lb equ $ -b


l db 'small letter',0x0A


ll equ $ -l


s db 'symbol',0x0A


ls equ $ -s


sh db 'shell code',0x0A


lsh equ $ -sh


ent db 0x0A


section .bss


xn 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 x,lx


read xn,1


mov al,[xn]


cmp al,'!'


jl _sh


cmp al,'0'


jl _s



cmp al,':'


jl _num


cmp al,'A'


jl _s



cmp al,'['


jl _b



cmp al,'a'


jl _s



cmp al,'{'


jl _l



cmp al,'~'


jle _s



jmp _sh



_sh:


write sh,lsh


jmp _exit


_s:


write s,ls


jmp _exit


_num:


write n,ln


jmp _exit


_b:


write b,lb


jmp _exit


_l:


write l,ll


jmp _exit



_exit:


mov eax,1


int 0x80



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

[Assembly] 어셈블리 Test12  (0) 2016.12.05
[Assembly] 어셈블리 Test11  (0) 2016.12.05
[Assembly] 어셈블리 Test9  (0) 2016.12.05
[Assembly] 파일입출력  (0) 2016.12.05
[Assembly] 어셈블리 Test8  (0) 2016.12.04