과제 축소, 하나만

*****
 ****
  ***
   **
    *
section .bss
  buf resb 1 ; 1바이트 버퍼 선언

section .text
  global _start

_start:
  mov rdi, 5 ; 최대 별 개수
  lea rsi, [buf]

  mov ebx, edi
  mov edx, edi

.loop_start: ; 반복문
  mov ecx, ebx
  sub ecx, edx
  mov rdi, rsi

.print_space: ; 공백 출력
  test ecx, ecx
  jz .print_star
  mov byte [rsi], ' '
  inc rsi
  dec ecx
  jmp .print_space

.print_star: ; 별찍기
  mov ecx, edx
.print_star_loop:
  test ecx, ecx
  jz .newline
  mov byte [rsi], '*'
  inc rsi
  dec ecx
  jmp .print_star_loop

.newline: ; 줄내림
  mov byte [rsi], 10
  inc rsi

  dec edx
  test edx, edx
  jnz .loop_start

  mov rdx, rsi
  sub rdx, buf
  mov rsi, buf
  mov rax, 1
  mov rdi, 1
  syscall

  mov rax, 60
  xor edi, edi
  syscall

* 공백 `` 를 출력 버퍼에 반복해서 저장합니다. 각 줄별로 필요한 공백의 수N - 현재 별의 수를 계산하고, 그 수만큼 공백을 버퍼에 저장합니다. 위의 공백 출력 후, 남은 공간에 해당하는 별을 버퍼에 저장합니다. 각 줄의 끝마다 줄내림 문자 \\n 을 추가합니다. 완성된 버퍼 문자열을 출력하고 종료합니다.