INCLUDE Irvine32.inc
.data
loopsize = 5 ;c++의 DEFINE
arr BYTE loopsize DUP(?) ;배열선언
str1 BYTE "Enter 5 numbers : ", 0
str2 BYTE "Reverse 5 numbers : ", 0
str3 BYTE ". ", 0
.code
main PROC
mov esi, OFFSET arr
mov edx, OFFSET str1
call WriteString ;c++의 cout
call Crlf ;c++의 \n
mov ecx, loopsize ;루트를 몇번 돌릴지
L1:
call ReadInt ;c++의 cin
push eax
inc esi ;c++의 증가연산자(++)
loop L1
call Crlf
mov edx, OFFSET str2
call WriteString
mov ecx, loopsize
mov edx, OFFSET str3
L2:
pop eax
call WriteDec
call WriteString
loop L2
call Crlf
exit
main ENDP
END main
.data
loopsize = 5 ;c++의 DEFINE
arr BYTE loopsize DUP(?) ;배열선언
str1 BYTE "Enter 5 numbers : ", 0
str2 BYTE "Reverse 5 numbers : ", 0
str3 BYTE ". ", 0
.code
main PROC
mov esi, OFFSET arr
mov edx, OFFSET str1
call WriteString ;c++의 cout
call Crlf ;c++의 \n
mov ecx, loopsize ;루트를 몇번 돌릴지
L1:
call ReadInt ;c++의 cin
push eax
inc esi ;c++의 증가연산자(++)
loop L1
call Crlf
mov edx, OFFSET str2
call WriteString
mov ecx, loopsize
mov edx, OFFSET str3
L2:
pop eax
call WriteDec
call WriteString
loop L2
call Crlf
exit
main ENDP
END main
어셈블리 언어에서 스택은 push명령어와 pop명령어로 이루어져있다.
5개의 숫자를 입력받아서 거꾸로 출력되는 프로그램이다.
c++에서는 입력된 숫자의 개수를 자동으로 알아낼 수 있지만
어셈블리에서는 어떤 방법이 있을까?
흠...곧 알아낼 것이다.