[어셈블리] 문자열 단어단위로 역순출력 프로그램
- 최초 등록일
- 2005.06.08
- 최종 저작일
- 2005.06
- 기타파일
- 가격 1,000원
소개글
이 프로그램 알고리즘의 기본적인 아이디어는 앞에서부터 문자를 읽다가 스페이스가 나오면
조건문을 이용해 그것을 문자배열상에서 스페이스 바로 전 배열의 문자부터 역푸쉬하고, 다 역푸쉬합니다. 그 뒤에 마지막으로 스페이스 하나를 푸쉬해주고 나서 다시 조건문을 만족했던 스페이스의 바로 뒤 배열부터 다시 읽어들이는 방식으로 스택에 배열의 데이터를 푸쉬합니다. 그 뒤에 일반적인 방식으로 스택에서 팝하여서 출력해내는 방식입니다.
컴파일 실행환경
Masm615에서 컴파일하고 실행했던 프로그래밍과제입니다.
본문내용
INCLUDE Irvine32.inc
.data
InputMessage BYTE "Input word list : ", 0
InputWord BYTE 150 DUP(0) ;10단어를 커버하기 위해 넉넉한 용량을 잡는다.
InputSize BYTE ? ; 처음의 eax의 입력받은 문자열을 저장해놓는 변수
Count BYTE ? ;ecx를 사용하는 Loop와 구별되는 독자적인 루프를 쓰기위한 변수.
;그 루프는 Divide내부에서 하나씩 값을 증가시킨 후, ReversePUSH레이블에서 값을 하나씩 감소시키며
;스페이스가 나오기 전부터의 역푸쉬를 정확하게 구현한다.
.code
main PROC
mov edx, OFFSET InputMessage
call WriteString
mov edx, OFFSET InputWord
mov ecx, (SIZEOF InputWord) - 1
call ReadString
mov InputSize, al
movzx ecx, InputSize;입력받은 문자열의 갯수를 루프카운터인 ecx에 대입.
mov ebx, -1; ebx는 esi레지스터가 Divide와 ReversePUSH를 넘나들며
;유연하게 처리될 수 있도록 esi의 값을 꾸준히 보관, 대입 해 준다.
참고 자료
없음