广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    汇编语言程序设计:[8]音乐程序

    来源:网络收集  点击:  时间:2024-12-11
    【导读】:
    汇编语言(Assembly Language)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。因此,有时候人们也把汇编语言称为组合语言。工具/原料moreAssembly Language nbsp; Masm汇编编译器方法/步骤1/3分步阅读

    打开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

    2/3

    在正文中输入我们的程序代码,并将文件命名为YINYUE.asm

    DATA SEGMENT PARA DATA

    INFO1 DB 0DH,0AH,***** Designed by 1wangxiaobo@163.com$

    INFO2 DB 0DH,0AH,xiaobo welcome you to run music program!$

    INFO3 DB 0DH,0AH,please select!$

    INFO4 DB 0DH,0AH,INPUT ERROR!$

    INFO5 DB 0DH,0AH,PLEASE INPUT AGAIN!$

    MUSLIST DB 0DH,0AH,A MUSIC1

    DB 0DH,0AH,B MUSIC2

    DB 0DH,0AH,C MUSIC3

    DB 0DH,0AH,Q EXIT

    db 0dh,0ah,$

    MUS_FREG1 DW 330,294,262,294,3 DUP (330)

    DW 3 DUP (294),330,392,392

    DW 330,294,262,294,4 DUP (330)

    DW 294,294,330,294,262,-1

    MUS_TIME1 DW 6 DUP (25*8),50*8

    DW 2 DUP (25*8,25*8,50*8)

    DW 12 DUP (25*8),100*8

    MUS_FREG2 DW 330,392,330,294,330,392,330,294,330

    DW 330,392,330,294,262,294,330,392,294

    DW 262,262,220,196,196,220,262,294,332,262,-1

    MUS_TIME2 DW 3 DUP(50),25,25,50,25,25,100

    DW 2 DUP(50,50,25,25),100

    DW 3 DUP(50,25,25),100

    MUS_FREG3 DW 262,262,294,262,349

    DW 330,262,262,294,262

    DW 392,349,262,262,523

    DW 440,349,262,262,466

    DW 466,440,262,392,349,-1

    MUS_TIME3 DW 50,50,100,100,100

    DW 100,100,50,50,100,100

    DW 100,100,100,50,50,100

    DW 100,100,100,100,100,50

    DW 50,100,100,100,100,100

    DATA ENDS

    STACK SEGMENT PARA STACK STACK

    DB 200 DUP (STACK)

    STACK ENDS

    CODE SEGMENT

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

    MAIN PROC FAR

    MOV AX,DATA

    MOV DS,AX

    MOV aH, 0

    MOV AL,4

    INT 10H

    MOV AH,0BH

    MOV BH,0

    MOV BL,4

    INT 10H

    MOV AH,0BH

    MOV BH,01H

    MOV BL,00

    INT 10H

    ;*****定义一个宏*****

    SHOW MACRO b

    LEA DX,b

    MOV AH,9

    INT 21H

    ENDM

    ;**********************

    show INFO1

    show INFO2

    show INFO3

    show MUSLIST

    INPUT: MOV AH,01H

    INT 21H

    CMP AL,Q

    JZ retu

    CMP AL,A

    JNZ B0

    CALL MUSIC1

    JMP EXIT1

    B0: CMP AL,B

    JNZ C0

    CALL MUSIC2

    JMP EXIT1

    C0: CMP AL,C

    JNZ exit

    CALL MUSIC3

    EXIT1: show INFO5

    JMP INPUT

    EXIT:

    call clear

    show INFO4

    show INFO5

    show INFO1

    show INFO2

    show INFO3

    show MUSLIST

    jmp input

    RETU: MOV AH,4CH

    INT 21H

    MAIN ENDP

    MUSIC1 PROC NEAR

    PUSH DS

    SUB AX,AX

    PUSH AX

    LEA SI,MUS_FREG1

    LEA BP,DS:MUS_TIME1

    FREG1: MOV DI,

    CMP DI,-1

    JE END_MUS1

    MOV DX,DS:

    MOV BX,1400

    CALL GENSOUND

    ADD SI,2

    ADD BP,2

    JMP FREG1

    END_MUS1:

    RET

    MUSIC1 ENDP

    GENSOUND PROC NEAR

    PUSH AX

    PUSH BX

    PUSH CX

    PUSH DX

    PUSH DI

    MOV AL,0B6H

    OUT 43H,AL

    MOV DX,12H

    MOV AX,533H*896

    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,8FF0H

    DELAY1: LOOP DELAY1

    DEC BX

    JNZ WAIT1

    MOV AL,AH

    OUT 61H,AL

    POP DI

    POP DX

    POP CX

    POP BX

    POP AX

    RET

    GENSOUND ENDP

    MUSIC2 PROC NEAR

    PUSH DS

    SUB AX,AX

    PUSH AX

    LEA SI,MUS_FREG2

    LEA BP,DS:MUS_TIME2

    FREG2: MOV DI,

    CMP DI,-1

    JE END_MUS2

    MOV DX,DS:

    MOV BX,1400

    CALL GENSOUND

    ADD SI,2

    ADD BP,2

    JMP FREG1

    END_MUS2:

    RET

    MUSIC2 ENDP

    MUSIC3 PROC NEAR

    PUSH DS

    SUB AX,AX

    PUSH AX

    LEA SI,MUS_FREG3

    LEA BP,DS:MUS_TIME3

    FREG3: MOV DI,

    CMP DI,-1

    JE END_MUS3

    MOV DX,DS:

    MOV BX,1400

    CALL GENSOUND

    ADD SI,2

    ADD BP,2

    JMP FREG1

    END_MUS3:

    RET

    MUSIC3 ENDP

    clear proc near

    push ax

    push bx

    push cx

    push dx

    mov ah,6

    mov al,0

    mov ch,0

    mov cl,0

    mov dh,24

    mov dl,79

    mov bh,7

    int 10h

    pop dx

    pop cx

    pop bx

    pop ax

    ret

    clear endp

    CODE ENDS

    END MAIN

    3/3

    运行我们编辑的文件

    汇编语言
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_1225757.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-07 20:40:22  耗时:0.033
    0.0327s