어셈블리어와 악성코드

어셈블리어를 이용하여 1부터 100까지의 합을 구해보자

YaluStar 2018. 11. 23. 00:16

어셈블리어를 이용하여 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까지 더하는 방법에 대하여 알아보았습니다.

감사합니다.


반응형