当前位置:编程学习 > 汇编语言 >>

用汇编语言编程实现简单的略去演奏

追问:乐曲演奏 失误 嘿嘿
答案:DATA  SEGMENT
     ;按12345678表示相应的音符(其中8表示i)
 
           MUS_FREQ  DW        262,294,330,347,392,440,494,523  
     DATA  ENDS
        CODE  SEGMENT
              ASSUME    CS:CODE,DS:DATA
      START:  MOV       AX,DATA
              MOV       DS,AX
              MOV       AL,0B6H
              OUT       43H,AL
     REPEAT:  LEA       BX,MUS_FREQ
              MOV       AH,08H
              INT       21H
              CMP       AL,0DH
              JZ        MUS_END
              CMP       AL,'1'
              JB        REPEAT
              CMP       AL,'8'
              JA        REPEAT
              SUB       AL,31H
              SHL       AL,1
              ADD       BL,AL
              MOV       DX,12H
              MOV       AX,3280H
              DIV       WORD PTR [BX]
              OUT       42H,AL
              MOV       AL,AH
              OUT       42H,AL
              IN        AL,61H
              PUSH      AX
              OR        AL,03H
              OUT       61H,AL
              CALL      DELAY
              POP       AX
              OUT       61H,AL
              JMP       REPEAT
    MUS_END:  MOV       AH,4CH
              INT       21H
       DELAY  PROC
              PUSH      CX
              PUSH      BX
              PUSH      DX
              PUSH      AX
              MOV       BX,20000          ;如果音太短或太长,可以调整这里的BX或CX值
         L2:  MOV       CX,28010
              LOOP      $
              DEC       BX
              JNZ       L2
              POP       AX
              POP       DX
              POP       BX
              POP       CX
              RET
       DELAY  ENDP
        CODE  ENDS
              END       START
其他:。。这是什么 

上一个:寄存器间接寻址方式中,操作数在( )中。 A. 通用寄存器 B. I/O端口 C. 存储单元 D. 段寄存器
下一个:汇编编程

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,