?? keshe.asm
字號:
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
RET
DISPLAY1 ENDP
;=========================================================
DISPCHAR PROC NEAR
MOV AH,2
INT 21H
RET
DISPCHAR ENDP
;=========================================================
DECIBIN PROC NEAR ;十進制到二進制
MOV BX,0
NEWCHAR:
MOV AH,1
INT 21H
SUB AL,30H
JL EXIT
CMP AL,9D
JG EXIT
CBW
XCHG AX,BX
MOV CX,10D
MUL CX
XCHG AX,BX
ADD BX,AX
JMP NEWCHAR
EXIT:
RET
DECIBIN ENDP
BINIHEX PROC NEAR
MOV CH,4
ROTATE: ROTATE: MOV CL,4
ROL BX,CL
MOV AL,BL
AND AL,0FH
ADD AL,30H
CMP AL,3AH
JL PRINTIT
ADD AL,7H
PRINTIT:
MOV DL,AL
MOV AH,2
INT 21H
DEC CH
JNZ ROTATE
RET
BINIHEX ENDP
CRLF PROC NEAR
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
RET
CRLF ENDP
;-------------------------------------------------------
MUSIC2 PROC NEAR
MOV AH, 0
MOV AL,00
INT 10H
SHOW INFO1
SHOW INFO2
SHOW INFO3
SHOW MUSLIST
INPUT: MOV AH,01H
INT 21H
CMP AL,'Q'
JZ RETU
CMP AL,'A'
JNZ B0
ADDRESS MUS_FREG1,MUS_TIME1
CALL MUSIC
JMP EXIT1
B0: CMP AL,'B'
JNZ C0
ADDRESS MUS_FREG2,MUS_TIME2
CALL MUSIC
JMP EXIT1
C0: CMP AL,'C'
JNZ EXIT5
ADDRESS MUS_FREG3,MUS_TIME3
CALL MUSIC
EXIT1: SHOW INFO5
JMP INPUT
EXIT5:
CALL CLEAR
SHOW INFO4
SHOW INFO5
SHOW INFO1
SHOW INFO2
SHOW INFO3
SHOW MUSLIST
JMP INPUT
RETU: MOV AH,4CH
INT 21H
MUSIC2 ENDP
;******************************************發(fā)聲
GENSOUND PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DI
MOV AL,0B6H
OUT 43H,AL
MOV DX,12H
MOV AX,348CH
DIV DI
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
IN AL,61H
MOV AH,AL
OR AL,3
OUT 61H,AL
WAIT1: MOV CX,3314
CALL WAITF
DELAY1: DEC BX
JNZ WAIT1
MOV AL,AH
OUT 61H,AL
POP DI
POP DX
POP CX
POP BX
POP AX
RET
GENSOUND ENDP
;********************************************
WAITF PROC NEAR
PUSH AX
WAITF1:
IN AL,61H
AND AL,10H
CMP AL,AH
JE WAITF1
MOV AH,AL
LOOP WAITF1
POP AX
RET
WAITF ENDP
;*********************************************
MUSIC PROC NEAR
PUSH DS
SUB AX,AX
PUSH AX
FREG: MOV DI,[SI]
CMP DI,-1
JE END_MUS
MOV BX,DS:[BP]
CALL GENSOUND
ADD SI,2
ADD BP,2
JMP FREG
END_MUS:
RET
MUSIC ENDP
;************************************************clear!!!
CLEAR PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,6
MOV AL,0
MOV BH,7
MOV CH,0
MOV CL,0
MOV DH,24
MOV DL,79
INT 10H
POP DX
POP CX
POP BX
POP AX
RET
CLEAR ENDP
;-----------------------------------------------------
EXIT3 PROC NEAR ;退出程序
WIN 0,07H,15,10,17,61
WIN 0,24H,14,9,16,60
MOV DH,15 ;行
MOV DL,9 ; 列
MOV BH,0 ; 頁號
MOV AH,2 ; 置光標 位置
INT 10H
LEA DX,MSGC
MOV AH,9
INT 21H
MOV AH,1
INT 21H
CMP AL,79H ;比較 y
JZ QUIT
Q:
CMP AL,6EH ; 比較n
JZ C
C:
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
CALL CLEARSCREEN
CALL BEGIN0
BEGIN14:
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
QUIT:
MOV AH,4CH
INT 21H
EXIT3 ENDP
;-----------------------------------------------
CLEARSCREEN PROC NEAR ;清屏程序
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,6
MOV AL,0
MOV BH,7
MOV CH,0
MOV CL,0
MOV DH,200
MOV DL,100
INT 10H
MOV DX,0
MOV AH,2
INT 10H
POP DX
POP CX
POP BX
POP AX
RET
CLEARSCREEN ENDP
;------------------------------------------------
PROGNAM ENDS
END START
;======================================================
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -