실행환경
- 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 |