TITLE DIGITALCAMERA
.MODEL HUGE
.STACK 64
.DATA
POWER DB 'POWER' ; 화면 출력에 쓰일 스트링 변수들
SETUP DB 'SETUP'
PLUS DB '+'
MINUS DB '-'
DEL DB 'DEL'
FORMAT DB 'FORMAT'
BEEP DB 'BEEP'
YES DB 'YES'
NO DB 'NO'
DELETE DB 'DELETE'
EXIT DB 'EXIT'
COL DW 46
ROW DW 27
C_START DW 29 ;사각형 그리기 함수에 사용될 변수들
R_START DW 73
C_END DW ?
R_END DW ?
C_START2 DW 301
R_START2 DW 171
C_END2 DW 334
R_END2 DW 204
C_START3 DW 334
R_START3 DW 171
C_END3 DW 301
R_END3 DW 204
DISPLAIED DB 0
CS_PART4 DW 0 ;분할 모드에 사용될 변수들
RS_PART4 DW 0
CE_PART4 DW 120
RE_PART4 DW 90
CAL DB ? ; 잡다한 계산에 사용될 변수
DURATION DW 100 ; 사운드 관련 변수들
TONE DW 512H
SOUND_SET DW 0
REVERSE DB 0 ; 표준 이동에서 필요한 변수
COL2 DW ? ; 직선을 그리는 함수에서 필요한 변수들
ROW2 DW ?
LEN DW ?
COLOR DB 1111B ; 색 변수
COLA DW 100 ; 색이 차있는 사각형을 그릴때 사용될 변수들
ROWA DW 100
COLA2 DW 200
ROWA2 DW 200
LEN2 DW ?
END_PART16 DB 0 ;16분할에서 사용될 변수
INDEX_DEL DB 0 ; 여러 인덱스들 현재 상황을 나타내는데 쓰임
INDEX_BMP DB 0
INDEX_PAGE DW 0
INDEX_SETUP DB 0
DELETED DW 0
SI_ZOOM16 DW ? ;확대에서 이미지 초점을 저장할 변수들
SI_ZOOM4 DW ?
COLOR_SLASH DB ? ; 색변수
ZOOM4W DB 30 ; 확대초점이동시 이미지끝을 넘어서지 못하게 하는 변수들
ZOOM4H DB 45
D_B_WIDTH DD 0 ;이미지 파일 읽을때 필요한 변수들
D_B_HEIGHT DD 0 ;
D_PALETTE DB 16*4 DUP (?) ;팔레트 변수
D_BMP DB 240*180 DUP (?) ; 이미지를 저장할 변수
TEST1 DW ? ; 현재 파일의 이름주소를 기억할 변수
STOREADD DW ? ;이름주소의 처음을 기억할 변수
STOREADD2 DW ? ; 이름주소의 끝을 기억할 변수
LIMIT_BMP DB 29 ; 마지막이미지에서 다음 이미지로 이동하는것을 막아주기 위한변수
D_FILENAME DB "1.BMP " ,0 ;파일 이름
D_FILENAME1 DB "2.BMP " ,0 ;파일 이름
D_FILENAME2 DB "3.BMP " ,0 ;파일 이름
D_FILENAME3 DB "4.BMP " ,0 ;파일 이름
D_FILENAME4 DB "5.BMP " ,0 ;파일 이름
D_FILENAME5 DB "6.BMP " ,0 ;파일 이름
D_FILENAME6 DB "7.BMP " ,0 ;파일 이름
D_FILENAME7 DB "8.BMP " ,0 ;파일 이름
D_FILENAME8 DB "9.BMP " ,0 ;파일 이름
D_FILENAME9 DB "10.BMP" ,0 ;파일 이름
D_FILENAME10 DB "11.BMP" ,0 ;파일 이름
D_FILENAME11 DB "12.BMP" ,0 ;파일 이름
D_FILENAME12 DB "13.BMP" ,0 ;파일 이름
D_FILENAME13 DB "14.BMP" ,0 ;파일 이름
D_FILENAME14 DB "15.BMP" ,0 ;파일 이름
D_FILENAME15 DB "16.BMP" ,0 ;파일 이름
D_FILENAME16 DB "17.BMP" ,0 ;파일 이름
D_FILENAME17 DB "18.BMP" ,0 ;파일 이름
D_FILENAME18 DB "19.BMP" ,0 ;파일 이름
D_FILENAME19 DB "20.BMP" ,0 ;파일 이름
D_FILENAME20 DB "21.BMP" ,0 ;파일 이름
D_FILENAME21 DB "22.BMP" ,0 ;파일 이름
D_FILENAME22 DB "23.BMP" ,0 ;파일 이름
D_FILENAME23 DB "24.BMP" ,0 ;파일 이름
D_FILENAME24 DB "25.BMP" ,0 ;파일 이름
D_FILENAME25 DB "26.BMP" ,0 ;파일 이름
D_FILENAME26 DB "27.BMP" ,0 ;파일 이름
D_FILENAME27 DB "28.BMP" ,0 ;파일 이름
D_FILENAME28 DB "29.BMP" ,0 ;파일 이름
D_FILENAME29 DB "30.BMP" ,0 ;파일 이름
NUMBER DB 0 ; 분할모드에서 현재 위치를 나타낼 변수
NUMBER2 DB ?
;-----------------------------------------------------
.386
.CODE
A10MAIN PROC FAR
MOV AX,@DATA
MOV DS,AX
MOV ES,AX
PUSHA
MOV AX,0012H
INT 10H
POPA
CALL B10FRAME ; 틀을 그림
CALL E12DRAWCYCLE ; 타원을 그림
LEA AX,D_FILENAME
MOV STOREADD,AX ; 파일이름변수 주소의 처음과 끝을 기억
MOV STOREADD2,AX
ADD STOREADD2,210
CALL SETPAL ;팔레트 설정
READY:
MOV AH,10H
INT 16H ;P입력을 기다림
CMP AL,70H
JE STARTP
CMP AL,50H
JE STARTP
JMP READY
STARTP:
CALL MODE_NORMAL
MOV AX,4C00H
INT 21H
A10MAIN ENDP
;------------------------------------------------
; 틀을 그리는 프로시져
;------------------------------------------------
B10FRAME PROC NEAR
MOV DX,0000H
B15:
MOV CX,540
INC DX
B20:
MOV AH,0CH
MOV AL,0011B
CMP DX,3
JB B25
CMP DX,248
JA B25
CMP CX,3
JB B25
CMP CX,538
JA B25
MOV AL,0110B
B25:
CMP CX,20
JE B40
CMP CX,260
JE B40
CMP DX,10
JE B40
CMP DX,240
JE B40
B30:
MOV BH,0
INT 10H
LOOP B20
CMP DX,250
JNE B15
MOV COL,260
MOV ROW,230
MOV C_START,18
MOV R_START,10
MOV COLOR_SLASH,1111B
CALL D10DRAW
MOV COL,236
MOV ROW,230
MOV C_START,285
MOV R_START,10
MOV COLOR_SLASH,1111B
CALL D10DRAW
;-------------------------
;스트링 함수호출 & 스트링 외부 사각형
;---------------------------------
CALL C10STRING
MOV COL,46
MOV ROW,27
MOV C_START,292
MOV R_START,73
CALL D10DRAW
MOV COL,46
MOV ROW,27
MOV C_START,292
MOV R_START,105
CALL D10DRAW
MOV COL,42
MOV ROW,25
MOV C_START,430
MOV R_START,173
CALL D10DRAW
MOV COL,35
MOV ROW,35
MOV C_START,300
MOV R_START,170
CALL D10DRAW
;------------------------
;대각선 만들기
;------------------------
MOV COLOR_SLASH,1111B
CALL E10DRAW2
CALL E11DRAW2
;-----------------------------
;화살표 그리기
;-----------------------------
;가장위 화살표
;-----------------------------
MOV C_START2,404
MOV R_START2,103
MOV C_END2,408
CALL E10DRAW2
MOV C_START3,404
MOV R_START3,103
MOV C_END3,400
CALL E11DRAW2
MOV COL2,400
MOV ROW2,108
MOV LEN,2
CALL E14LINE
MOV COL2,406
MOV ROW2,108
MOV LEN,2
CALL E14LINE
MOV COL2,402
MOV ROW2,116
MOV LEN,4
CALL E14LINE
MOV COL2,402
MOV ROW2,108
MOV LEN,8
CALL E15LINE2
MOV COL2,406
MOV ROW2,108
MOV LEN,8
CALL E15LINE2
;----------------------
;왼쪽화살표
;--------------------
MOV C_START3,376
MOV R_START3,126
MOV C_END3,372
CALL E11DRAW2
MOV C_START2,372
MOV R_START2,130
MOV C_END2,376
CALL E10DRAW2
MOV COL2,376
MOV ROW2,126
MOV LEN,2
CALL E15LINE2
MOV COL2,376
MOV ROW2,132
MOV LEN,2
CALL E15LINE2
MOV COL2,384
MOV ROW2,128
MOV LEN,4
CALL E15LINE2
MOV COL2,376
MOV ROW2,128
MOV LEN,8
CALL E14LINE
MOV COL2,376
MOV ROW2,132
MOV LEN,8
CALL E14LINE
;--------------------
;오른쪽 화살표
;--------------------
MOV C_START3,434
MOV R_START3,130
MOV C_END3,430
CALL E11DRAW2
MOV C_START2,430
MOV R_START2,126
MOV C_END2,434
CALL E10DRAW2
MOV COL2,430
MOV ROW2,126
MOV LEN,2
CALL E15LINE2
MOV COL2,430
MOV ROW2,132
MOV LEN,2
CALL E15LINE2
MOV COL2,422
MOV ROW2,128
MOV LEN,4
CALL E15LINE2
MOV COL2,422
MOV ROW2,128
MOV LEN,8
CALL E14LINE
MOV COL2,422
MOV ROW2,132
MOV LEN,8
CALL E14LINE
;-------------------
;아래화살표
;------------------
MOV C_START2,400
MOV R_START2,152
MOV C_END2,404
CALL E10DRAW2
MOV C_START3,408
MOV R_START3,152
MOV C_END3,404
CALL E11DRAW2
MOV COL2,400
MOV ROW2,152
MOV LEN,2
CALL E14LINE
MOV COL2,406
MOV ROW2,152
MOV LEN,2
CALL E14LINE
MOV COL2,402
MOV ROW2,144
MOV LEN,4
CALL E14LINE
MOV COL2,402
MOV ROW2,144
MOV LEN,8
CALL E15LINE2
MOV COL2,406
MOV ROW2,144
MOV LEN,8
CALL E15LINE2
;--------------------
; ENTER 원그리기
;-------------------
MOV COL2,402
MOV ROW2,122
MOV LEN,4
CALL E14LINE
MOV COL2,400
MOV ROW2,123
MOV LEN,3
CALL E14LINE
MOV COL2,405
MOV ROW2,123
MOV LEN,3
CALL E14LINE
MOV COL2,398
MOV ROW2,124
MOV LEN,2
CALL E14LINE
MOV COL2,408
MOV ROW2,124
MOV LEN,2
CALL E14LINE
MOV COL2,397
MOV ROW2,125
MOV LEN,1
CALL E14LINE
MOV COL2,409
MOV ROW2,125
MOV LEN,1
CALL E14LINE
MOV COL2,396
MOV ROW2,126
MOV LEN,1
CALL E14LINE
MOV COL2,410
MOV ROW2,126
MOV LEN,1
CALL E14LINE
MOV COL2,395
MOV ROW2,127
MOV LEN,1
CALL E14LINE
MOV COL2,411
MOV ROW2,127
MOV LEN,1
CALL E14LINE
MOV COL2,395
MOV ROW2,128
MOV LEN,1
CALL E14LINE
MOV COL2,411
MOV ROW2,128
MOV LEN,1
CALL E14LINE
MOV COL2,394
MOV ROW2,129
MOV LEN,1
CALL E14LINE
MOV COL2,412
MOV ROW2,129
MOV LEN,1
CALL E14LINE
MOV COL2,394
MOV ROW2,130
MOV LEN,1
CALL E14LINE
MOV COL2,412
MOV ROW2,130
MOV LEN,1
CALL E14LINE
MOV COL2,394
MOV ROW2,131
MOV LEN,1
CALL E14LINE
MOV COL2,412
MOV ROW2,131
MOV LEN,1
CALL E14LINE
MOV COL2,395
MOV ROW2,132
MOV LEN,1
CALL E14LINE
MOV COL2,411
MOV ROW2,132
MOV LEN,1
CALL E14LINE
MOV COL2,395
MOV ROW2,133
MOV LEN,1
CALL E14LINE
MOV COL2,411
MOV ROW2,133
MOV LEN,1
CALL E14LINE
MOV COL2,396
MOV ROW2,134
MOV LEN,1
CALL E14LINE
MOV COL2,410
MOV ROW2,134
MOV LEN,1
CALL E14LINE
MOV COL2,397
MOV ROW2,135
MOV LEN,1
CALL E14LINE
MOV COL2,409
MOV ROW2,135
MOV LEN,1
CALL E14LINE
MOV COL2,398
MOV ROW2,136
MOV LEN,2
CALL E14LINE
MOV COL2,408
MOV ROW2,136
MOV LEN,2
CALL E14LINE
MOV COL2,400
MOV ROW2,137
MOV LEN,3
CALL E14LINE
MOV COL2,405
MOV ROW2,137
MOV LEN,3
CALL E14LINE
MOV COL2,402
MOV ROW2,138
MOV LEN,4
CALL E14LINE
RET
B40:
CMP DX,10
JB B30
CMP DX,240
JA B30
CMP CX,20
JB B30
CMP CX,260
JA B30
MOV AL,0110B
JMP B30
B10FRAME ENDP
;------------------------------------------------
; 스트링 들을 보여주는 프로시져
;------------------------------------------------
C10STRING PROC NEAR
PUSHA
C10:
MOV AH,13H
MOV AL,00H
MOV BH,00H
MOV BL,10001001B ; 1111 1100
C20:
LEA BP,POWER
MOV CX,5
MOV DX,0525H
INT 10H
C30:
LEA BP,SETUP
MOV CX,5
MOV DX,0725H
INT 10H
C40:
LEA BP,MINUS
MOV CX,1
MOV DX,0532H
INT 10H
C50:
LEA BP,PLUS
MOV CX,1
MOV DX,0539H
INT 10H
C60:
LEA BP,DEL
MOV CX,3
MOV DX,0B37H
INT 10H
POPA
RET
C10STRING ENDP
;------------------------------------------------
; 사각형을 그리는 프로시져
;------------------------------------------------
D10DRAW PROC NEAR
PUSHA
MOV AX,COL
ADD AX,C_START
MOV C_END,AX
MOV AX,ROW
ADD AX,R_START
MOV R_END,AX
MOV BX,R_END
SUB BX,2
MOV AH,0CH
MOV AL,COLOR_SLASH
MOV BH,00H
MOV CH,00H
MOV CX,C_START
MOV DH,00H
MOV DX,R_START
D20:
INT 10H
INC CX
CMP CX,C_END
JNE D20
D30:
MOV CX,C_START
INT 10H
MOV CX,C_END
INT 10H
INC DX
CMP DX,BX
JNE D30
INT 10H
MOV CX,C_START
D40:
INT 10H
INC CX
CMP CX,C_END
JNE D40
POPA
RET
D10DRAW ENDP
;------------------------------------------------
; 대각선을 만드는 프로시져1
;------------------------------------------------
E10DRAW2 PROC NEAR
E10:
MOV AH,0CH
MOV AL,1111B
MOV BH,0
MOV CX,C_START2
MOV DX,R_START2
INT 10H
CMP CX,C_END2
JE E20
INC C_START2
INC R_START2
JMP E10
E20:
RET
RET
E10DRAW2 ENDP
;------------------------------------------------
; 대각선을 만드는 프로시져2
;------------------------------------------------
E11DRAW2 PROC NEAR
E11:
MOV AH,0CH
MOV AL,1111B
MOV BH,0
MOV CX,C_START3
MOV DX,R_START3
INT 10H
CMP CX,C_END3
JE E21
DEC C_START3
INC R_START3
JMP E11
E21:
RET
RET
E11DRAW2 ENDP
;------------------------------------------------
; 타원을 그리는 프로시져
;------------------------------------------------
;왼쪽타원
;-------------
E12DRAWCYCLE PROC NEAR
MOV CX,399
E12:
MOV AH,0CH
MOV AL,1111B
MOV BH,0
MOV DX,83
INT 10H
CMP CX,407
JE E22
INC CX
JMP E12
E22:
MOV CX,395
E32:
MOV AH,0CH
MOV AL,1111B
MOV BH,0
MOV DX,84
INT 10H
CMP CX,399
JE E42
INC CX
JMP E32
E42:
MOV CX,407
E52:
MOV AH,0CH
MOV AL,1111B
MOV BH,0
MOV DX,84
INT 10H
CMP CX,411
JE E62
INC CX
JMP E52
E62:
MOV CX,393
E72:
MOV AH,0CH
MOV AL,1111B
MOV BH,0
MOV DX,85
INT 10H
CMP CX,396
JE E82
INC CX
JMP E72
E82:
MOV CX,410
E92:
MOV AH,0CH
MOV AL,1111B
MOV BH,0
MOV DX,85
INT 10H
CMP CX,413
JE E102
INC CX
JMP E92
E102:
MOV CX,391
E112:
MOV AH,0CH
MOV AL,1111B
MOV BH,0
MOV DX,86
INT 10H
CMP CX,393
JE E122
INC CX
JMP E112
E122:
MOV CX,413
E132:
MOV AH,0CH
MOV AL,1111B
MOV BH,0
MOV DX,86
INT 10H
CMP CX,415
JE E142
INC CX
JMP E132
E142:
MOV AH,0CH
MOV AL,1111B
MOV BH,0
MOV CX,390
MOV DX,87
INT 10H
MOV AH,0CH
MOV AL,1111B
MOV BH,0
MOV CX,416
MOV DX,87
INT 10H
MOV AH,0CH
MOV AL,1111B
MOV BH,0
MOV CX,390
MOV DX,88
INT 10H
MOV AH,0CH
MOV AL,1111B
MOV &n
재미있는 어셈블리
6000(220.93)
2005-06-23 18:11
추천 0
댓글 9
다른 게시글
-
'ㅁ'/ [5]OkataLina | 05.06.23추천 0
-
에디드플러스짤방 [9]하드코딩 | 05.06.23추천 0
-
횽들은 정말 좋은 후로그래머가 되기를 바래~ [1]음냐뤼 | 05.06.23추천 0
-
C/C++기초도 모르면서 MFC/Win32API쓰는넘들 [9]낙타구 | 05.06.23추천 0
-
짤방??? 확끈한거? [6]음냐뤼 | 05.06.23추천 0
-
집에 내려갔다 올께요 [3]-_- | 05.06.23추천 0
-
-ㅅ- Visual C++6.0 받고 잇엉 -ㅅ-;;; [5]SMD Ent | 05.06.23추천 0
-
횽들 간단한 프로젝트 구상좀 해봐.. [3]음냐뤼 | 05.06.23추천 0
-
Perl을 할 줄 아는 사람이 진정한 고수다. [9]낙타구 | 05.06.23추천 0
-
SMD횽 1학년? [4]ㅇㅇㅇ | 05.06.23추천 0
들어가는 어셈이야?
응 숙제로 내가짠거야 총 6천줄.
횽아~ 한줄한줄 설명해주라~ 6천줄 다~ 궁금하다~
오 존내 흥미롭잖아
나도 대학 다닐때 도스화면에 INT로 간단한 메뉴화면 만들엇는데 8천줄 나와따 ㅡ.ㅡ
짤방의 스크롤 압박이 심하네요
앞으로는 소스도 3줄요약해서 올려라.
△ 그게 가능하오?
k대 컴과지 ㅋㅋㅋ