페이지

2014. 11. 11.

[MASM] 스택 사용1 (문자열)

TITLE 11월 3일 실습 스택사용

INCLUDE Irvine32.inc

arraySize = 10

.data
prompt1 BYTE "Enter Your Name : ",0
prompt2 BYTE "Reverse String : ",0
inputName BYTE 80 DUP(0) ;이름
byteCount DWORD ? ;입력받은 문자수


.code
main PROC

mov edx, OFFSET prompt1
call WriteString

;이름 입력
mov edx, OFFSET inputName ;ReadString의 오프셋
mov ecx, SIZEOF inputName ;ReadString의 최대 문자수에 1을 더한값
call ReadString
mov byteCount, eax ;문자의 수
call Crlf


;스택에  push
mov ecx, byteCount ;입력된 문자수 만큼만 푸시
mov esi, 0

L1:
    movzx eax, inputName[esi]
    push eax
    inc esi
 
    Loop L1


;스택의 내용을 pop
mov ecx, byteCount ;입력된 문자수 만큼만 푸시
mov esi, 0

L2:
    pop eax
    mov inputName[esi], al
    inc esi
 
    Loop L2

;역으로 출력
mov edx, OFFSET prompt2
call WriteString
mov edx, OFFSET inputName
call WriteString
call Crlf
call Crlf
exit
main ENDP

END main