문제요약 : ClearScreen, GotoXY로 커서를 화면의 중간쯤 오게 한다. 두개의 정수를 입력받을 안내문 출력
합을 출력

풀이 : 커서를 화면의 중간쯤으로 보낼 프로시저를 이용한다.

전체적인 풀이는 Sum2.asm 예제를 이용한다.
GotoXY프로시저를 이용하여 커서를 중간으로 보낸다.
추가로 드는 의문 - 입력 후 행이 바뀔 때 마다 커서를 중간으로 보내는 방법은??
프로시저를 추가로 만든다.

Sum2.asm예제와 다른점 : gotoXY프로시저 이용, GoToCenter프로시저 이용(스스로 만들어야 함)

INCLUDE Irvine32.inc

INTEGER_COUNT = 2

.data
str1		BYTE "Enter a signed integer : ",0
str2		BYTE "The sum of the integer is: ",0
array	DWORD INTEGER_COUNT DUP(?)
rowval	BYTE 12	;//커서의 행 값을 저장하기 위한 변수

.code
main	PROC
	call	Clrscr
	mov	esi,OFFSET array
	mov	ecx,INTEGER_COUNT	
	call	PromptForIntegers
	call	ArraySum
	call	DisplaySum
	exit
main	ENDP

PromptForIntegers	PROC USES ecx edx esi
	mov	edx,OFFSET str1	
 L1:	
	call	GoToCenter	;//프로시저 호출로 커서를 센터로 보냄
 	call	WriteString
	call	ReadInt
	call	Crlf
	mov	[esi],eax
	add	esi,TYPE DWORD
	loop	L1
	ret
PromptForIntegers	ENDP

ArraySum	PROC USES esi ecx
	mov	eax,0
 L1:	add	eax,[esi]
	add	esi,TYPE DWORD
	loop	L1
	ret
ArraySum	ENDP

DisplaySum	PROC USES edx
	mov	edx,OFFSET str2
	call	GoToCenter	;//프로시저 호출로 커서를 센터로 보냄
	call	WriteString
	call	WriteInt
	call	Crlf
	ret
DisplaySum	ENDP

GoToCenter	PROC	USES edx	;//커서를 화면의 중간쯤으로 보내는 프로시저
	pushad
	mov	dl,30
	mov	dh,rowval
	call	GotoXY
	inc	dh
	mov	rowval,dh
	popad
	ret
GoToCenter	ENDP

END	main

Posted by 공돌이pooh
,