⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ++

📁 这是我在很多网站上辛苦搜集的所有有关计算机钢琴的程序以及大量报告
💻
字号:
;********************************************************
;                  通用微机发声程序及动画显示
;				Power BY WJZ
;
;    编译环境 : 未来汇编1.0       编译内核: TASM 4.1
;                    COPYRIGHT (C) 2005
;
;    本程序为2004学年度,广东工业大学2002届工业工程2班
;      伍健柱的微机课程设计作业,引用须保留版权信息
;********************************************************







DATA SEGMENT


         
      PALETTE DB 764 DUP(?)                       ;调色板缓冲
      palette_top db ?
         
      palette_parameter1 db 3 dup(?)                ;产生渐变色的三个参数
      palette_parameter2 db 3 dup(?)
      palette_parameter3 db 3 dup(?)

      red_increment dw ?                             ;生成渐变色的临时参数,分别为红,绿,蓝的增量
      green_increment dw ?
      blue_increment dw ?
         
      ROCK_DIRECT DB 0                                ;动画滚屏的方向
         
COLOR   DB 63,63,0,0,63,10                            ;渐变色的色调值
        DB 63,0,0,63,63,0
        DB 38,63,0,63,63,63
        DB 0,49,61,63,63,63
        DB 0,0,63,0,63,63
        DB 63,27,0,63,63,63
        DB 63,0,56,63,0,0
        DB 63,53,0,30,63,0
COLOR_POINT DW 0                                       ; 渐变色的色调值指针
         
         
         
         
mus1      dw 196,196,330,294,262,196                    ; 第一支乐曲的音调值
          dw 3 dup(196),330,294,262,220
          dw 220,220,349,330,294,247
          dw 247,392,392,349,294,330
          dw 196,196,330,294,262,196
          dw 196,196,330,294,262,220
          dw 220,220,349,330,294,392,392,392
          dw 392,440,392,349,294,262,20
          dw 3 dup(330)
          dw 3 dup(330)
          dw 330,392,262,294,330
          dw 5 dup(349),330,330
          dw 3 dup(330),294,294,262,294,392
          dw 3 dup(330)
          dw 3 dup(330)
          dw 330,392,262,294,330
          dw 5 dup(349),330,330
          dw 2 dup(330),392,392,349,294,262,-1
mus1time  dw 5 dup(25),75,12,13,4 dup(25),75,5 dup(25),75,25
          dw 4 dup(25),75,5 dup(25),75,5 dup(25),75,25
          dw 12 dup(25),75,25,2 dup(25,25,50),4 dup(25),100
          dw 2 dup(25),38,12,3 dup(25),12,13,5 dup(25),75
          dw 2 dup(25,25,50),4 dup(25),100
          dw 2 dup(25),38,12,3 dup(25),12,13,4 dup(25),75,0

mus2      dw 196,196                                        ; 第2支乐曲的音调值
          dw 220,196,262
          dw 247,196,196
          dw 220,196,294
          dw 262,196,196
          dw 392,330,262
          dw 247,220,349,349
          dw 330,262,294
          dw 262,-1
mus2time  dw 25,25
          dw 50,50,50
          dw 100,25,25
          dw 50,50,50
          dw 100,25,25
          dw 50,50,50
          dw 50,50,25,25
          dw 50,50,50
          dw 100,0


mus3      dw 659,698                                      ; 第3支乐曲的音调值
            dw  783,783,879,783
             dw 657,587
             dw 523,659,587,523
            dw  440,440
             dw 392,523,587
            dw  659,783,879,659
             dw 587
             dw 0,659,698
             dw 783,783,879,783
             dw 659,587
             dw 523,659,587,523
             dw 440,440
             dw 392,523,659
             dw 587,523,440
             dw 523
             dw 0,659,783
            dw  879,1024
            dw  879,698,783,879
        dw      783,659
           dw   783,659,783
            dw  879,1046
           dw   1046,879,783,659
           dw   587,-1


mus3time  dw 50,50
          dw 75,25,50,50
          dw 150,50
          dw 75,25,50,50
          dw 150,50
          dw 100,50,50
          dw 50,50,50,50
          dw 250
          dw 50,50,50
          dw 75,25,50,50
          dw 150,50
          dw 75,25,50,50
          dw 150,50
          dw 100,75,25
          dw 100,50,50
          dw 250
          dw 50,50,50
          dw 150,50
          dw 50,50,50,50
          dw 150,50
          dw 100,50,50
          dw 150,50
          dw 50,50,50,50
          dw 250,0

mus4      dw 392,587,523,392,349,330,392,392                         ; 第4支乐曲的音调值
         dw  494,330,392,587,523,440
         dw   392,349,220,262,262,294,262
            dw 294,330,392,392,349,329
          dw  330,330,493,523
          dw  440,392,349,349,349,330
          dw  349,523,440,494,494,330
          dw  392,587,523,392,349,330
          dw  392,392,494,329
          dw  392,587,523,440,392,349
           dw 440,262,262,294,523
           dw 494,440,392,392,349,330
           dw 587,587,440,440
           dw 330,392,349,0
           dw 0,440,392,440,392,440,494
           dw 294,262,-1
mus4time  dw 25,25,50,50,25,75
           dw 25,50,50,25
           dw 25,25,50,50,25,50
           dw 25,25,50,50,25
           dw 25,25,50,50,25,75
           dw 25,25,25,50
           dw 25,25,50,50,25,25
           dw 25,25,25,50,50,25
           dw 25,25,50,50,25,75
           dw 25,50,50,25
           dw 25,25,50,50,25,50
           dw 25,25,50,50,25
           dw 25,25,50,50,25,75
           dw 25,50,50,25
           dw 25,25,100,50
           dw 25,50,25,25,25,25,25
           dw 50,175
           dw 0


mus5      dw 0,0,523,587                                             ; 第5支乐曲的音调值
          dw 659,659,659,587,523,659
          dw 587,587,659,587
          dw 523,523,523,440,523
          dw 493,493,493,523,493
          dw 440,493,523,523,493,440
          dw 392,392,523,659,523,587
          dw 659,659,587,523,587
          dw 0,523,587
          dw 659,659,659,587,523,659
          dw 587,587,659,587
          dw 523,523,523,440,523
          dw 493,493,523,493
          dw 440,493,523,523,493,440
          dw 392,523,659,523,523,587
          dw  659,587,587,659
          dw 587,523,493,587
          dw 523,523,-1

mus5time  dw 50,50,50,50
          dw 50,50,25,25,25,50
          dw 25,50,25,25
          dw 50,50,50,25,50
          dw 25,100,25,25
          dw 50,25,50,25,25,25
          dw 25,25,25,75,25,25
          dw 50,50,25,50,75
          dw 50,50,50
          dw 50,50,25,25,25,50
          dw 25,50,25,25
          dw 50,50,25,25,25,50
          dw 25,50,25,25
          dw 50,50,50,25,50
          dw 25,100,25,25
          dw 50,25,50,25,25,25
          dw 50,25,50,25,25,25
          dw 50,25,50,50
          dw 50,50,25,50
          dw 25,100,0




text1      db 'Choose Your Fucking Songs',0dh,0ah
          db '按1,2,3,4,5选择你要评分的Fucking Song',0dh,0ah
          db '1.圣诞歌',0dh,0ah
          db '2.祝你生日快乐',0dh,0ah
          db '3.万水千山总是情',0dh,0ah
          db '4.奇洛李维斯回信',0dh,0ah
          db '5.勇气百分百(隐者乱太郎主题曲)',0dh,0ah
          db'按esc退出',0ah,0dh,'$'

TEXT2       db '按0,1键给音乐打分',0dh,0ah ,0dh,0ah
            db '0.Fucking Bad',0dh,0ah
            db '1.This Song is Fucking Good',0dh,0ah ,0dh,0ah

          db'共评分10次,任何时候按esc退出',0ah,0dh,'$'

TEXT3       DB '你是第'
            N_MAN LABEL BYTE
            DB 0H,0H
            DB '位对此Music评分的Fucking Man,谢谢。还有'
            LEFT_MAN LABEL BYTE
            DB 10H
            DB '次评分机会',0ah,0dh, 0ah,0dh ,'$'

SCORE:
            DB '这支Music 的总得分为:'
GENERAL_SCORE LABEL BYTE
            DB 0h,0H
            db 0ah,0dh,0ah,0dh,'按Y键继续对其他Music评分,按N键结束程序','$'


         
         
DATA ENDS

STACK SEGMENT
          ST1 DB 100 DUP(?)
STACK ENDS



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


INIT:
      MOV AX,STACK
      MOV SS,AX
      

      MOV AX,DATA
      MOV DS,AX


sds:   CALL SETPOS                                  ;复位坐标,setpos为复位坐标子程序
repeat:call  cls                                     ;清屏

       MOV DX,OFFSET TEXT1
       CALL  DISPLAYTEXT

       mov   ah,1
       int   21h

       cmp   al,'1'
       je    no1
       cmp   al,'2'
       je    no2
       cmp   al,'3'
       je    no3
       cmp   al,'4'
       je    no4
       cmp   al,'5'
       je    no5
       cmp   al,1bh
       je    endmu
       jmp   sds

no1:  call  cls

      lea   si,mus1
      lea   bp,mus1time
      CALL INIT_GRA                                   ;初始化屏幕模式,进入320*200,同屏256色,最大发色数26万模式,即ah=13h
      jmp   go

no2:  call  cls

      lea   si,mus2
      lea   bp,mus2time
      CALL INIT_GRA                                ;同上
         

      jmp   go

no3:  call  cls

      lea   si,mus3
      lea   bp,mus3time
      CALL INIT_GRA                       ;同上
      jmp   go

no4:  call  cls

      lea   si,mus4
      lea   bp,mus4time
      CALL INIT_GRA                        ;同上
      jmp   go

no5:  call  cls

      lea   si,mus5
      lea   bp,mus5time
      CALL INIT_GRA                     ;同上
      jmp   go

go:

     CALL JIEPAI                         ; 音调每改变一次,就调用一次名为jiepai的子程序。改变滚屏动画的方向以及色调
      mov   di,[si]
   cmp   di,-1
   je    GRADE
   mov   bx,ds:[bp]
   call  sound                            ;发出声调
   add   si,2
   add   bp,2

   mov   ah,0bh
   int   21h
   cmp   al,0ffh
   je    TEMP_QUIT
   jmp   go
TEMP_QUIT:
      call exit_gra
      JMP QUIT
endmu: mov ax,4c00h
       int 21h

GRADE:
      CALL EXIT_GRA
      MOV AL,0
      MOV N_MAN,AL
      MOV AL,10
      MOV LEFT_MAN,AL
      CALL CLS
      CALL SETPOS
      MOV AX,0
      MOV AH,9
      MOV DX,OFFSET TEXT2
      INT 21H
      MOV CX,10
      MOV BX,0

G_LOOP:

      MOV AH,7
      INT 21H

      CMP AL,'0'
      JE TO_NEXT
      CMP AL,'1'
      JE INCREASE
      CMP AL,1BH
      JE TEMP_END
      JMP SHORT G_LOOP
INCREASE:
      MOV DL,1

      MOV AX,BX
      ADD AL,DL
      AAA
      MOV BX,AX




TO_NEXT:
      MOV DL,[N_MAN+1]
      MOV AX,1
      ADD AL,DL
      AAA
      OR AX,3030H

      MOV N_MAN,AH
      MOV [N_MAN+1],AL
      MOV AL,LEFT_MAN
      MOV DL,1
      SUB AL,DL
      DAS
      OR AX,30H
      MOV LEFT_MAN,AL
      MOV DX,OFFSET TEXT3

      MOV AX,900H
      INT 21H
      LOOP G_LOOP


      OR BX,3030H
      MOV GENERAL_SCORE,BH
      MOV GENERAL_SCORE+1,BL
      MOV AX,0
      MOV AH,9
      MOV DX,OFFSET SCORE
      INT 21H
P_LOOP:      MOV AH,7
      INT 21H
      CMP AL,'y'
      JE TEMP_REPEAT
      CMP AL,'Y'
      JE TEMP_REPEAT
      CMP AL,'N'
      JE TEMP_END
      CMP AL,'n'
      JE TEMP_END
      JMP P_LOOP
TEMP_REPEAT:
      CALL SETPOS
      CALL CLS
      JMP REPEAT
TEMP_END:
      JMP ENDMU

TO_MENU:      JMP SDS


QUIT: call exit_gra
      mov  ah, 0ch
       int  21h
       in   al, 61h
       mov  al,0
       out  61h, al
       jmp  sds




sound proc near
       mov ax,0
       cmp di,ax
       je wait1
       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
       push ax                               ;由于程序原来用监视61h端口的方法进行延时,每次调用的时候延时值为10ms,现在采用的是显卡的垂直回扫周期加61h端口来延时(在winNT,2000,XP都可以用)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -