어셈블리어에서 반복문은 분기문을 활용해 만들거나 전용 명령어를 이용해 만들 수 있다. 

우선 분기문을 활용해 반복문을 만들어보았다.

분기문을 활용한 반복문 만들기

eax, ebx를 0으로 초기화시켜준다.

라벨을 통해 되돌아 올 지점을 만들어주고 ebx의 값을 1씩 증가시킨다. 

(add ebx, 1 = inc ebx는 같은 뜻의 코드이다. 반대로 1씩 감소시키고 싶다면 sub ebx, 1 = dec ebx로 만들 수 있다.)

그리고 eax + ebx를 하고 더한 값을 eax에 저장한다.

ebx의 값을 100과 비교하고 jne(두 숫자가 같지 않다면 라벨로 이동)를 통해 LABEL_LOOP 지점으로 점프한다.

이것을 ebx의 값이 100이 될 때까지 반복한다. 

이후에 ebx의 값이 100이 되면 jne가 부정되어서 프린트 코드가 실행되고 

1~100까지의 숫자를 모두 더한 값이 출력된다.


이번에는 LOOP 명령어를 통해 반복문을 제작해보았다.

LOOP 명령을 통한 반복문 제작

ecx에 초기값으로 100을 주고 eax는 0으로 초기화한다.

점프 지점을 설정해주고 eax = eax + ecx를 진행한다.

loop 명령을 통해 지정된 점프 지점으로 루프 시킨다. 

여기서 loop 명령은 자체적으로 규칙을 가지고 있다 ecx의 값을 1씩 감소시키며 루프를 하는데 

만약 ecx의 값이 0이 되면 루프 밖으로 빠져나간다.

ecx의 값이 0이 되고 밑으로 빠져나가 프린트 코드가 실행된다.

결과적으로 100~1까지 모두 더한 값을 출력하게 된다.

+ Recent posts