어셈블리어를 이용하여 1부터 100까지의 합을 구해보자
어셈블리어를 이용하여 1부터 100까지의 합을 구해보자
실습 환경
VMware Workstation 15 Player (FREE 버전)
Windows XP Professional SP3 (32Bit)
실습 목표
1부터 100까지 더한 결과를 DS:100 메모리 번지에 저장한다.
CMD창을 열어 debug 명령어를 입력합니다.
-a 100
:0100 MOV AX, 0
:0103 MOV BX, 0
:0106 MOV CX, 64
:0109 INC AX
:010A ADD BX, AX
:010C LOOP
:010E MOV WORD[100], BX
:0112
먼저 AX, BX에 0000의 값을 넣어줍니다. 1부터 100까지의 반복이기 때문에 CX=0064의 값을 넣어줍니다.
숫자 100을 16진수로 변환하면 64입니다.
INC AX 명령어로 AX에 +1을 더합니다.
ADD BX, AX 명령어를 이용하여 BX와 AX을 더한 후 BX에 저장합니다.
LOOP 0109 명령어를 통해 0109 주소로 이동합니다. 0109 주소로 이동하면 INC AX 명령어부터 다시 실행됩니다. 이 때 0109 주소로 이동하면서 CX 레지스터의 값이 64h에서 63h로 1 감소합니다. 이렇게 CX 레지스터의 값이 0000이 될 때까지 0109 - 010C 주소 사이를 반복합니다.
그리고 최종적으로는 MOV WORD[100], BX 명령어를 통해 BX에 1부터 100까지 더한 값을 DS:100 메모리 번지에 저장하게 됩니다.
이상으로 어셈블리어를 이용하여 1부터 100까지 더하는 방법에 대하여 알아보았습니다.
감사합니다.