음...2년전쯤에 짠거긴하지만...
도움될 분들이 있을까 해서 ㅎㄷㄷ
PAGE 60,80
TITLE GUGUDAN
ASSUME DS:DATA,CS:CODE,SS:STACK
;----------------------------MAIN-----------------------------------
MAIN PROC FAR
MOV AX,DATA
MOV DS,AX
PUSH BP
MOV SP,BP
SUB SP,20
DAN_SU_SETTING: ; 수의 입력-----------DAN_SU_SETTING IN MAIN
MOV AH,01h
INT 21h
CMP AL,'A' ; A이면 종료
JE ENDCODE
MOV DAN,AL ; 입력받은 수를 단에 저장
MOV BL,31h
CALL DOWN ; 개행하는 프로시져 호출
MOV CX,9 ; 카운터 9로 초기화
GUGUDAN:;--------------------------------------------GUGUDAN IN MAIN
MOV DL,DAN ; 단을 출력
MOV AH,02h
INT 21h
MOV AH,02h
INT 21h
MOV DL,BL ; 수를 출력
MOV AH,02h
INT 21h
MOV DL,'=' ; =을 출력
MOV AH,02h
INT 21h
CALL SPACE
CALL REMUL ; 결과값 프로시져 호출
CALL DOWN
ADD BL,1 ; 수를 1 증가
LOOP GUGUDAN ; 카운터 만큼 루프
JMP DAN_SU_SETTING
MOV AH,4Ch
INT 21h
;------------------------------MAIN END----------------------------
;-------------------------------SPACE------------------------------
SPACE PROC NEAR ; 한칸띄우는 프로시져
MOV DL,' '
MOV AH,02h
INT 21h
RET
SPACE ENDP
;----------------------------SPACE END-----------------------------
;------------------------------REMUL-------------------------------
REMUL PROC NEAR
MOV DX,0000h ; 초기화
PUSH DX ; 마지막 pop를 알기위해 저장
MOV DL,DAN ; 단을 DL에 저장
MOV AL,BL ; 수를 AL에 저장
SUB DL,30h ; 정수화
SUB AL,30h ; 정수화
MUL DL ; 곱하기
DIV DIVSU ; 10으로 AL을 나눔
MOV DL,AH ; 나머지를 DL로 이동
ADD DL,30h ; 정수형을 아스키화시킴
MOV DH,00h ; 상위 8비트 초기화
MOV AH,00h ; 상위 8비트 초기화
PUSH DX ; 스텍에 저장
CMP AL,00h ; 비교하여 더이상 나눌것이 있냐?
JE PRINT_SU ; 없으면 출력문으로
JMP ITOA ; 있으면 다시 ITOA 레이블로
PRINT_SU:;-----------------------------------------PRINT_SU IN REMUL
POP DX; ; 저장된것을 가져옴
CMP DL,00h ; 비교,더이상 출력할것이 있냐?
JE ENDCODE ; 없으면 종료
MOV AH,02h ; 있으면 출력
INT 21h
JMP PRINT_SU
RET
REMUL ENDP
;------------------------------REMUL END---------------------------
;--------------------------------DOWN------------------------------
DOWN PROC NEAR ; 줄바꿈 프로시져
MOV DL,0Ah
MOV AH,02h
INT 21h
MOV AH,02h
INT 21h
RET
DOWN ENDP
;-------------------------------DOWN END---------------------------
CODE ENDS;################################################CODE ENDS
DIVSU DB 10 ; 나누기위한 10 저장
END