본문 바로가기

Programming Language/Assembly

[Assembly] 어셈블리 문제6

실행환경

- cpu : 인텔계열(64bit)

- 컴파일러 : nasm

- 리눅스 : ubuntu 16.04 LTS


설치방법

sudo apt-get install nasm


컴파일

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

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


문제6 : loop를 활용하여 문자 0~9 대문자 A~Z 소문자 a~z를 출력하시오


exam6.asm


section .data


n db '0'


b db 'A'


s db 'a'


space db ' '


ent db 0x0A




section .bss




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:


mov rcx,62




_lp:


push rcx


cmp rcx,52


jg _n




cmp rcx,26


jg _b




jmp _s




_lop:


loop _lp


jmp _exit




_n:


write n,1


mov al,[n]


inc al


mov [n],al


pop rcx


push rcx


cmp rcx,53


je _ent


jmp _loop




_ent:


write ent,1


pop rcx




_loop:


jmp _lop




_b:


write b,1


mov al,[b]


inc al


mov [b],al


pop rcx


push rcx


cmp rcx,27


je _ent


jmp _loop




_s:


write s,1


mov al,[s]


inc al


mov [s],al


pop rcx


push rcx


cmp rcx,1


je _ent


jmp _loop




_exit:


mov eax,1


int 0x80


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

[Assembly] 어셈블리 문제8  (0) 2016.12.05
[Assembly] 어셈블리 문제7  (0) 2016.12.05
[Assembly] 어셈블리 문제5  (0) 2016.12.05
[Assembly] 어셈블리 문제4  (0) 2016.12.05
[Assembly] 어셈블리 문제3  (0) 2016.12.05