时空幻境 游戏公司:求一使扬声器发出声音的汇编语言小程序

来源:百度文库 编辑:高考问答 时间:2024/05/03 07:03:00
就是一个小汇编程序 能是机子发出 “嗤嗤··”的声音就可以了

给你一个我上大学时候写的代码,可以播放两首歌曲。一首是我最喜欢听的林忆莲的《至少还有你》还有一首忘了。希望对你有帮助!
///////////////////////////////////////////////////
DISP MACRO Y,X,STRS,LENS,COLOR
MOV AX,1301H
MOV BH,0
MOV BL,COLOR
MOV CX,LENS
MOV DH,Y
MOV DL,X
MOV BP,OFFSET STRS
INT 10H
ENDM

DATA SEGMENT
STR0 DB 'M E N U'
STR1 DB '赏虲hoose One屯突'
STR2 DB '?1. Music1 ?
STR3 DB '?2. Music2 ?
STR4 DB '?3. Return DOS ?
STR5 DB '韧屯屯屯屯屯屯屯?

YF1 DW 371,330,495,416,416,371,330,312,330,278,416,278,278,330,371,330,556,441,441,416,441,278,312,330,371,65535,416,441,495,495,495,556,330,65535,495,312,371,65535,371,416,278,441,416,441,441,495,371,0
TM1 DB 2,2,2,4,2,2,2,2,2,2,4,2,4,2,2,2,2,2,2,2,2,2,2,2,12,2,2,2,2,2,2,2,8,2,2,2,2,2,2,2,4,4,2,2,2,2,2,12
YF2 DW 371,330,495,416,416,371,330,312,330,278,416,278,278,330,371,330,556,441,441,416,441,278,312,330,371,65535,416,441,495,495,495,556,330,65535,495,312,371,65535,371,416,278,441,416,441,441,495,371,0
TM2 DB 2,2,2,4,2,2,2,2,2,2,4,2,4,2,2,2,2,2,2,2,2,2,2,2,12,2,2,2,2,2,2,2,8,2,2,2,2,2,2,2,4,4,2,2,2,2,2,12
ATM1 EQU 1000
ATM2 EQU 145
YF DW ?
TM DW ?
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX

SHOW: MOV AH,0
MOV AL,1
INT 10H

DISP 8,15,STR0,7,34H
DISP 10,10,STR1,17,38H
DISP 11,10,STR2,17,38H
DISP 12,10,STR3,17,38H
DISP 13,10,STR4,17,38H
DISP 14,10,STR5,17,38H

MOV AH,02H
MOV BH,0
MOV DH,16
MOV DL,17
INT 10H

CHOOSE: MOV AH,08H
INT 21H
CMP AL,'1'
JZ M1
CMP AL,'2'
JZ M2
CMP AL,'3'
JZ OVER
JMP CHOOSE

M1: LEA SI,YF1
MOV YF,SI
LEA SI,TM1
MOV TM,SI
JMP BEG

M2: LEA SI,YF2
MOV YF,SI
LEA SI,TM2
MOV TM,SI

BEG: MOV AL,10110110B
OUT 43H,AL
CALL OPEN

RTN: MOV SI,YF
MOV DI,TM

ACT: MOV DX,12H
MOV AX, 34DEH
DIV WORD PTR[SI]
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
CALL DELAY

ADD SI,2
CMP WORD PTR[SI],0
JZ RTN
INC DI

MOV AH,1
INT 16H
JZ ACT
CALL CLOSE
JMP SHOW

OVER: MOV AH,4CH
INT 21H

OPEN PROC
IN AL,61H
OR AL,00000011B
OUT 61H,AL
RET
OPEN ENDP

CLOSE PROC
IN AL,61H
AND AL,11111100B
OUT 61H,AL
RET
CLOSE ENDP

DELAY PROC
MOV AX,ATM1
MOV DH,0
MOV DL,[DI]
MUL DX
MOV DX,ATM2
MUL DX
MOV CX,DX
MOV DX,AX
MOV AH,86H
INT 15H
RET
DELAY ENDP

CODE ENDS
END START