hahahia

Reversing String(readstring, writestring procedure사용법) 본문

Language/Assembly

Reversing String(readstring, writestring procedure사용법)

hahahia 2012. 5. 4. 11:13


ReadString procedure 사용법 =>
edx 레지스터에 입력받을 string의 OFFSET을 mov시키고
ecx 레지스터에 string의 SIZEOF(TYPE*LENGTHOF)값을 대입한 이후
call ReadString 명령문을 실행시키면 커서창에서 string을 입력받을 수 있다.

WriteString procedure 사용법 =>
edx 레지스터에 출력할 string의 OFFSET을 mov 시키고
call WriteString 명령문을 실행시키면 해당하는 string을 출력 할 수 있다.

/* revstr.asm */

INCLUDE Irvine32.inc

.data

buffer BYTE 50 DUP(0)

byteCount DWORD ?

.code

    main PROC

           mov edx, OFFSET buffer

           mov ecx, SIZEOF buffer

           call ReadString ; string을 입력받는 과정

           mov byteCount, eax ; string의 길이를 받는 과정

           mov ecx, byteCount ; string의 길이만큼 루프를 돌기 위한 제어문

           mov esi, 0

 

           L1:

                     movzx eax, buffer[esi]

                     push eax ; 스택에 차례로 넣는다

                     inc esi

           loop L1

 

           mov ecx, byteCount

           mov esi, 0

 

           L2:

                     pop eax ; 스택에서 차례로 빼온다.

                     mov buffer[esi], al 

                     inc esi

                     loop L2

 

           mov edx, OFFSET buffer

           call WriteString ; 재배열(뒤집어진) 문자열을 출력한다.

           call Crlf

           exit

main ENDP

END main

// 스택에 문자열을 push한 이후 다시 pop하여 스택의 구조적 특징인 FILO를 이용해 문자열을 반대로 출력한다.

'Language > Assembly' 카테고리의 다른 글

Gotoxy를 통한 커서 컨트롤 예제(loop추가)  (0) 2012.05.04
Gotoxy를 통한 커서 컨트롤 예제  (0) 2012.05.04
SetTextColor procedure  (0) 2012.05.04
mov, add, sub 명령어  (0) 2012.04.14
기초적인 어셈블리어 예제  (0) 2012.04.04
Comments