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

어셈블리 언어에서 스택은 push명령어와 pop명령어로 이루어져있다.
5개의 숫자를 입력받아서 거꾸로 출력되는 프로그램이다.

c++에서는 입력된 숫자의 개수를 자동으로 알아낼 수 있지만
어셈블리에서는 어떤 방법이 있을까?

흠...곧 알아낼 것이다.
Posted by 정훈승