彙編語言音樂簡譜演奏程序示例?

Tags: 程序, 簡譜, 示例,

彙編語言(Assembly Language)是面向機器的程序設計語言。在彙編語言中,用助記符(Memoni)代替機器指令的操作碼,用地址符號(Symbol)或標號(Label)代替指令或操作數的地址,如此就增強了程序的可讀性並且降低了編寫難度,象這樣符號化的程序設計語言就是彙編語言,因此亦稱為符號語言。使用匯編語言編寫的程序,機器不能直接識別,還要由彙編程序或者叫彙編語言編譯器轉換成機器指令。彙編程序將符號化的操作代碼組裝成處理器可以識別的機器指令,這個組裝的過程稱為組合或者彙編。因此,有時候人們也把彙編語言稱為組合語言。

工具/原料

Assembly Language Masm彙編編譯器

方法/步驟

打開masm彙編編譯程序,新建一個masm源文件腳本。

DATAS SEGMENT

;此處輸入數據段代碼

DATAS ENDS

STACKS SEGMENT

;此處輸入堆棧段代碼

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

MOV AX,DATAS

MOV DS,AX

;此處輸入代碼段代碼

MOV AH,4CH

INT 21H

CODES ENDS

END START

彙編語言音樂簡譜演奏程序示例

彙編語言音樂簡譜演奏程序示例

在正文中輸入我們的程序代碼,並將文件命名為music.asm

;**********Designed by [email protected]^**************

DATA SEGMENT

msg DB 0DH,0AH,'[ 1 2 3 4 5 6 7 q] 9 :exit'

;DB 0DH,0AH,' [ q w e r t y u ]'

; DB 0DH,0AH,'_________________'

; DB 0DH,0AH,'9: EXIT'

DB 0DH,0AH,'xiaobo Assembly Language test for music',0DH,0AH,' ^Designed by [email protected]^',0DH,0AH,' ^Henan University of Economics and Law^',0DH,0AH,'please input number for music__','$'

;******Designed by [email protected]^**音調******後面用到-1判斷音樂播是否放完

sound_0 DW -1

sound_11 DW 441,-1

sound_12 DW 495,-1

sound_13 DW 556,-1

sound_14 DW 589,-1

sound_15 DW 661,-1

sound_16 DW 742,-1

sound_17 DW 833,-1

sound_1 DW 882,-1

sound_2 DW 990,-1

sound_3 DW 1112,-1

sound_4 DW 1178,-1

sound_5 DW 1322,-1

sound_6 DW 1484,-1

sound_7 DW 1655,-1

time DW 25

DATA ENDS

;********Designed by [email protected]^****************

STACK SEGMENT

Db 200 DUP ('STACK')

STACK ENDS

;*********Designed by [email protected]^**************

CODE SEGMENT

ASSUME DS:DATA,SS:STACK,CS:CODE

START:

MOV AX,DATA

MOV DS,AX

MOV aH,0

MOV AL,00

INT 10H

;*****定義一個宏*****

SHOW MACRO b

LEA DX,b

MOV AH,9

INT 21H

ENDM

;********一個聲音宏********

onesound macro soundis,jumpis,letteris

CMP AL,letteris

JNZ jumpis

LEA SI,soundis

LEA BP,DS:time

CALL MUSIC

JMP input

ENDM

show msg

INPUT: MOV AH,01H

INT 21H

CMP AL,'9'

jnz go

mov ah,4ch

int 21h

go: onesound sound_11,a0,'q'

a0: onesound sound_12,b0,'w'

b0: onesound sound_13,c0,'e'

c0: onesound sound_14,d0,'r'

d0: onesound sound_15,e0,'t'

e0: onesound sound_16,f0,'y'

f0: onesound sound_17,g0,'u'

g0: onesound sound_1,h0,'1'

h0: onesound sound_2,i0,'2'

i0: onesound sound_3,j0,'3'

j0: onesound sound_4,k0,'4'

k0: onesound sound_5,l0,'5'

l0: onesound sound_6,m0,'6'

m0: onesound sound_7,n0,'7'

n0: onesound sound_0,o0,al

o0: jmp input

;***********Designed by [email protected]^*********發聲

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

;************Designed by [email protected]^**************

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

;**************Designed by [email protected]^**********

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

CODE ENDS

;************Designed by [email protected]^**********

END START

彙編語言音樂簡譜演奏程序示例

運行我們編輯的文件,按提示輸入 例 2 5 3 5 的數字 就可以揍出音樂音符了

附歌曲童話的簡譜為

忘了有多久 在沒聽到你

51715 51715

對我說你最愛的故事

517111665

我想了很久 我開始慌了

51715 53221

是不是我 又做錯了什麼

5176 661165

你哭著對我說 童話裡都是騙人的

224433 33721171

我不可能是你的王子

171455432

也許你不會懂

224433

從你說愛我以後 我的 天空 星星都亮了

3377671 13216 66555

我願變成童話裡 你愛的那個天使

5543343 3434321

張開雙手 變成翅膀守護你

1356 6652243

你要相信相信我們會像童話故事裡 幸福和快樂是結局

135666522434321 23661171

一起寫我們的結局

23661171

彙編語言音樂簡譜演奏程序示例

彙編語言音樂簡譜演奏程序示例

相關問題答案