Study/App

[App]레지스터 함수, 배열

seomj 2022. 10. 4. 23:50

함수

PRINT 함수

이처럼 PRINT 함수를 선언하고 실행시키면 해당 함수 내부로 들어가 msg 문자열을 출력시키게 된다.

 

ADD 함수

eax와 ebx의 더하기 연산을 해주는 함수를 실행시켰고

1과 3을 더해 4가 출력되었다.

 

MIN 함수

cmp를 통해 eax와 ebx의 값을 비교한 뒤 jl을 통해 eax가 더 작으면 LABEL_1으로 이동하게 된다.

jl: jump if A less than B

 

해당 코드에서는 eax가 1, ebx가 3으로 해당 함수들을 거쳐 1이 출력된다.

 

 

배열

ecx를 14번째 줄에서 cmp로 5와 비교를 하여 15번째 줄에서 jne를 사용해 반복 실행 혹은 종료가 된다.

즉, 5번의 반복문을 실행한다고 생각하면 된다.

 

[a]는 시작주소이고 ecx가 처음에 0, 1, 2, 3, 4의 값까지 증가하게 되기에

출력은 a[0] , a[1], a[2], a[3] a[4]인 1, 2, 3, 4, 5 가 된다.

 

 

실제로 a는 시작 값인 1을 출력하고 있다.

 

만약 23번째 줄에서 db인 1byte가 아닌 dw인 2byte로 변경을 하게 된다면 다음과 같다.

이처럼 a의 배열이 [1, 0, 2, 0, 3, 0, 4, 0, 5, 0]의 방식으로 구성이 되어 있다.

그리고 이를 ecx를 사용해 그대로 출력시키니 a[0], a[1], a[2], a[3], a[4]의 값인 1, 0, 2, 0, 3을 출력한다.