Programming Language/Assembly

[Assembly] 어셈블리 Test9

Ccomment 2016. 12. 5. 20:37

실행환경

- cpu : 인텔계열(64bit)

- 컴파일러 : nasm

- 리눅스 : ubuntu 16.04 LTS


설치방법

sudo apt-get install nasm


컴파일

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

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



문제 : 알파벳 한 글자를 입력한 후 소문자이면 대문자로, 대문자이면 소문자로 변환하여 출력

       ex) a -> A


test9.asm

section .data


x db 'x :'

len equ $ -x

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,len


read xn,1


mov al,[xn]


xor al,32


mov [xn],al


write xn,1


write ent,1


_exit:


mov eax,1


int 0x80