새소식

💻 Computer/🦖 Assembly

[Assembly] 반복문

  • -
Assembly로 뭘 할 수 있을까?

나는 생각했다 내가 입력한걸 10번 출력해주는 그런 것을

그래서 만들어 보았다

 

 

코드
section .text
	global _start

_start:
	mov rsi, rsp
    sub rsi, 0x10
    mov rdx, 0x10
    xor rdi, rdi
    xor rax, rax
    syscall
    
    ;write
    mov r10, 1
again:
	cmp r10, 10
    je done
    inc r10
    mov rax, 1
    mov rdi, 1
    syscall
    jmp again
    
    ;finish
done:
	mov rax, 0x3c
    mov rdi, 0
    syscall

처음에 배울 때 "대체 왜?? 저렇게 하는 거지??"라고 생각했던 것들이 이젠 하루 지나니 조금은 이해가 되었나 보다

위의 코드는 처음으로 내가 스스로 만들어 본 것이다.

 

코드를 작성하며 헷갈렸던 부분은 syscall 할 때마다 rax에는 함수 호출 후의 반환 값이 들어간다는 것이었다

그래서 again에서  

again:
	cmp r10, 10
    je done
    inc r10
    mov rax, 1
    syscall
    jmp again

syscall을 하기 전 mov rax, 1로 rax를 계속 바꿔 주는 것을 볼 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'💻 Computer > 🦖 Assembly' 카테고리의 다른 글

[Assembly] Hello world 출력  (0) 2022.09.18
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.