汇编语言程序设计实验报告-实验十

实验十 音乐程序

实验目的:

1、掌握PC机发音原理及音乐程序编制方法。

2、8088指令: IN,OUT,DIV,OR

实验内容:

一、发音程序。

1、用DEBUG输入下列程序:

MOV DX,4000H

IN AL,61H

AND AL,FCH

LOP: XOR AL,02H

OUT 61H,AL

MOV CX,0140H

DEY: LOOP LOP

DEC DX

JNE LOP

INT 21H

INT 20H

2、在DEBUG下运行此程序,改变延时时间常数,注意声音高低变化。

二、音乐程序。

1、输入,汇编,连接并运行下列程序:

stacksg segment para stack

dw 32 dup(?)

stacksg ends

datasg segment

tiger db 0ah,0dh,'two tiger。$'

tig_freq dw 2 dup(262,294,330,262)

dw 2 dup(330,349,392)

dw 2 dup(392,440,392,349,330,262)

dw 2 dup(294,196,262),0ffffh

tig_time dw 10 dup(25),50,25,25,50

dw 2 dup(12,12,12,12,25,25)

dw 2 dup(25,25,50)

datasg ends

codesg segment

assume cs:codesg,ds:datasg,ss:stacksg

start: mov ax,datasg

mov ds,ax

lea dx,tiger

mov ah,9

int 21h

lea si,tig_freq

lea bp,ds:tig_time

call play

mov ah,4ch

int 21h

play proc

freq: mov di,[si]

cmp di,0ffffh

je end_ply

mov bx,ds:[bp]

call sound

add si,2

add bp,2

jmp freq

end_ply: ret

play endp

sound proc

mov al,0b6h

out 43h,al

mov dx,14h

mov ax,4f38h

div di

out 42h,al

mov al,ah

out 42h,al

in al,61h

mov ah,al

or al,3

out 61h,al

wait: mov cx,5000

spkr_on: loop spkr_on

dec bx

jnz wait

mov al,ah

out 61h,al

ret

sound endp

codesg ends

end start

2、修改程序,使它能演奏一首你所喜爱的歌曲。

3、若歌曲中有休止符,怎么办?

实验报告:

1、实验记录和体会。

2、自编程序。

 

第二篇:《汇编语言程序设计》实验报告(一)

《汇编语言程序设计》实验报告(一)

相关推荐