어셈블리어를 이용하여 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까지 더하는 방법에 대하여 알아보았습니다.
감사합니다.
'어셈블리어와 악성코드' 카테고리의 다른 글
MINI-100 바이러스 분석하기 - (1) (0) | 2018.11.26 |
---|---|
MINI-100 바이러스에 대하여 알아보기 (0) | 2018.11.25 |
레지스터와 메모리에 대하여 알아보기 (0) | 2018.11.22 |
INT(Interrupt), NOP(No Operation), LOOP (0) | 2018.11.21 |
스택(Stack), PUSH, POP (0) | 2018.11.20 |