?? gangqin.txt
字號(hào):
DATA SEGMENT
DAT DB 0, 45, 75, 100, 125, 157, 190, 222, 252
HEIGHT DB 0, 40, 70, 100, 130, 160, 190, 220, 250
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AH,0 ; 圖形方式:每屏幕字符數(shù)80×25, 16色
MOV AL,12H
INT 10H
MOV AH,6 ; 清屏
MOV AL,0
MOV CH,0
MOV CL,0
MOV DH,18H
MOV DL,4FH
INT 10H
MOV SI,451
MOV DX,480
REDRAW:MOV DI,16
ADD DI,48
MOV CX,16
SUB DX,1
CMP DX,SI
JB LL
MOV BL,0
PAINT: MOV AL,9
MOV AH,0CH
MOV BH,0
INT 10H
INC CX
CMP CX,DI
JBE PAINT
ADD DI,80
ADD CX,32
INC BL
CMP BL,7
JBE PAINT
JMP REDRAW
LL:
MOV AL,80H ;對8255進(jìn)行初始化工作,A口、B口均為輸出狀態(tài)工作與方式0
OUT 63H,AL
MOV AL,0B7H ;對計(jì)數(shù)器8253進(jìn)行初始化工作,選2號(hào)計(jì)數(shù)器,且先讀寫低8位后高8位,工作與模式3
OUT 43H,AL
PP: MOV AH,01H
INT 16H
JZ PP
SUB AL,30H
CMP AL,09H ;AL中的參數(shù)將傳遞到SOUND子程序去
JAE OVER1
CALL SOUND
JMP PP
OVER1:JMP OVER
SOUND PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
MOV AH,0
MOV SI,AX ; 保護(hù)AL于SI中,以待后用,作為參數(shù)傳遞
MOV BX,OFFSET DAT
XLAT
MOV DI,AX
MOV DX,12H
MOV AX,34DCH
DIV DI
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
IN AL,61H
OR AL,3
OUT 61H,AL ;此時(shí)喇叭將在計(jì)數(shù)器輸出的頻率工作發(fā)聲,且CPU得以解放可執(zhí)行下面的繪圖工作
CALL PIANO
MOV AL,0
OUT 61H,AL
MOV AL,0H
MOV AH,0CH
INT 21H
POP SI
POP DX
POP CX
POP BX
POP AX
RET
SOUND ENDP
PIANO PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DI
MOV AX,SI
MOV BH,AL ;BH中表示按得是什么鍵,
MOV BL,0
PUSH BX
MOV BX,OFFSET HEIGHT
XLAT
POP BX ;BH中表示按得是什么鍵,
MOV AH,0
PUSH AX ;AX中的為鍵柱的高度
MOV DX,450
MOV CX,10
DEC BH
MOV AL,BH
MOV BL,80
MUL BL
ADD CX,AX ;CX中為鍵柱的起始橫坐標(biāo)
;;;;;;;;;;
POP AX ;AX中的為鍵柱的高度
INC BH ;BH中表示按得是什么鍵,
;;;;;;;;;;
MOV SI,CX
ADD SI,32 ;SI中為橫坐標(biāo)的邊界
MOV DI,DX
SUB DI,AX ;DI中為縱坐標(biāo)的邊界
OK: PUSH SI
SUB SI,32
MOV CX,SI
POP SI
SB: MOV AL,0EH
MOV AH,0CH
MOV BH,0
INT 10H
INC CX
CMP CX,SI
JBE SB
DEC DX
CMP DX,DI
JAE OK
PUSH BX
PUSH CX
MOV BX,5000
DELAY:MOV CX,0FfFH
DL10MS:LOOP DL10MS
DEC BX
JNZ DELAY
POP CX
POP BX
MOV DX,DI
MOV DI,450
GO: PUSH SI
SUB SI,32
MOV CX,SI
POP SI
CA: MOV AL,0H
MOV AH,0CH
MOV BH,0
INT 10H
INC CX
CMP CX,SI
JBE CA
INC DX
CMP DX,DI
JBE GO
POP DI
POP DX
POP CX
POP BX
POP AX
RET
PIANO ENDP
OVER: MOV AH,4CH
INT 21H
CODE ENDS
END START
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -