%include "io64.inc"
section .text
global CMAIN
CMAIN:
mov rbp, rsp; for correct debugging
; 반복문 (while for)
; 특정 조건을 만족할 때까지 반복해서 실행~
; ex) Hello World를 10번 출력해야 한다면?
mov ecx, 10
LABEL_LOOP:
PRINT_STRING msg
NEWLINE
dec ecx ; sub ecs, 1과 동일
cmp ecx, 0
jne LABEL_LOOP
; 연습 문제) 1에서 100까지의 합을 구하는 프로그램 1+2+3+4+...+100 = ?
mov eax, 100 ; 최종 목적지
xor ebx, ebx ; mov ebx, - ebx: ,결과물
xor ecx, ecx
LABEL_SUM:
inc ecx ; add ecs, 1과 동일
add ebx, ecx
cmp ecx, eax
jne LABEL_SUM
PRINT_DEC 4, ebx
NEWLINE
; loop [라벨]
; -ecs에 반복 횟수
; -loop 할 때마다 ecx 1 감소. 0이면 빠져나감. 아니면 라벨로 이동
mov ecx, 100
LABEL_LOOP_SUM:
add ebx, ecx
loop LABEL_LOOP_SUM
PRINT_DEC 4, ebx
NEWLINE
xor rax, rax
ret
; 초기화 되지 않은 데이터
;[변수이름] [크기] [개수]`
;[크기] resb(1) resw(2) resd(4) resq(8)
section .data
msg db 'Hello World', 0x00
; 초기화 되지 않은 데이터
;[변수이름] [크기] [개수]`
;[크기] resb(1) resw(2) resd(4) resq(8)
section .bss
e resb 10