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

📄 1.asm

📁 计算机硬件技术课程设计
💻 ASM
📖 第 1 页 / 共 2 页
字号:
              MOV       AL,14
              INT       10H
              INC       DX
              CMP       DX,0AFH        ;绘图到行末尾结束
              JNZ       L1_WEL
              MOV       DX,1EH
              INC       CX
              CMP       CX,0E0H        ;绘图到列末尾结束
              JNZ       L1_WEL
              MOV       DX,1EH         ;起始点设置
              MOV       CX,60H
     L2_WEL:  MOV       AH,0CH         ;设置绘图颜色
              MOV       AL,6
              INT       10H
              INC       DX
              CMP       DX,0AFH        ;到行末尾结束
              JNZ       L2_WEL
     L3_WEL:  MOV       AH,0CH         ;设置绘图颜色
              MOV       AL,6           
              INT       10H
              INC       CX
              CMP       CX,0E0H        ;到列末尾结束
              JNZ       L3_WEL
              MOV       DX,1EH         ;起始点设置
              MOV       CX,60H
     L4_WEL:  MOV       AH,0CH
              MOV       AL,6           ;设置绘图颜色
              INT       10H
              INC       CX
              CMP       CX,0E0H        ;到列末尾结束
              JNZ       L4_WEL
     L5_WEL:  MOV       AH,0CH
              MOV       AL,6           ;设置绘图颜色
              INT       10H
              INC       DX
              CMP       DX,0AFH        ;到行末尾结束
              JNZ       L5_WEL
              MOV       DX,58H         ;打点
              MOV       CX,0C0H
              MOV       AH,0CH
              MOV       AL,6
              INT       10H
              MOV       DX,58H         ;打点
              MOV       CX,0D0H
              MOV       AH,0CH
              MOV       AL,6
              INT       10H
              MOV       DX,58H         ;打点
              MOV       CX,0C8H     
              MOV       AH,0CH
              MOV       AL,6
              INT       10H
              MOV       DX,1EH         ;起始点设置
              MOV       CX,46H
      L6_WEL: MOV       AH,0CH         ;设置绘图颜色(左对联)
              MOV       AL,4
              INT       10H
              INC       DX
              CMP       DX,0AFH        ;到行末尾结束
              JNZ       L6_WEL
              MOV       DX,1EH
              INC       CX
              CMP       CX,5BH         ;到行末尾结束
              JNZ       L6_WEL
              MOV       DX,1EH
              MOV       CX,0E5H
     L7_WEL:  MOV       AH,0CH         ;设置绘图颜色(右对联)
              MOV       AL,4
              INT       10H
              INC       DX
              CMP       DX,0AFH        ;到行末尾结束
              JNZ       L7_WEL
              MOV       DX,1EH
              INC       CX
              CMP       CX,0FAH        ;到行末尾结束
              JNZ       L7_WEL
              LEA       DI,M
              LEA       SI,N
      L8_WEL: MOV       DX,[DI]        ;汉字打点
              MOV       CX,[SI]
              MOV       AH,0CH
              MOV       AL,0
              INT       10H
              INC       DI		
              INC       SI
              CMP       [DI],0H
              JNZ       L8_WEL
              MOV       DX,0AEH
              MOV       CX,61H
     L9_WEL:  MOV       AH,0CH         ;设置绘图颜色
              MOV       AL,15
              INT       10H
              INC       CX
              CMP       CX,0E0H        ;绘图到列末尾结束
              JNZ       L9_WEL
              PUSH CX
              MOV CX,0FFH
   DELAY_WEL1:PUSH CX                  ;开门延时
               MOV CX,0FFFFH
   DELAY_WEL2:NOP
              LOOP DELAY_WEL2
              POP CX
              LOOP DELAY_WEL1
              POP CX
              MOV       CX,61H
              DEC       DX
              CMP       DX,1EH         ;绘图到行末尾结束
              JNZ       L9_WEL
              LEA       DX,WELCOME     ;显示文字提示信息
              MOV       AH,9
              INT       21H
              RET
 WELCOME_PIC  ENDP
;-------------------------------------;WELCOME_SOUND子程序
            WELCOME_SOUND  PROC      NEAR

              LEA       SI,FREQ     ;建立频率表指针
              LEA       BP,TIME     ;建立节拍表指针
 MUSIC1_WEL:  MOV       DI,[SI]     ;取频率
              CMP       DI,0        ;频率是否为0
              JE        DONE_WELS   ;是,转结束
              MOV       BX,DS:[BP]  ;不是,取对应的持续时间
              MOV       AL,0B6H     ;初始化定时器通道2的工作方式
              OUT       43H,AL      
              MOV       DX,12H      ;求计数器初值
              MOV       AX,3280H
              DIV       DI
              OUT       42H,AL      ;送计数器初值
              MOV       AL,AH
              OUT       42H,AL      
              IN        AL,61H      ;读PB口状态
              MOV       AH,AL
              OR        AL,03H      ;使PB0和PB1置1
              OUT       61H,AL      
 DELAY1_WEL:  MOV       CX,0FFFFH   ;延时
 DELAY2_WEL:  LOOP      DELAY2_WEL
              DEC       BX
              JNZ       DELAY1_WEL
              MOV       AL,AH       ;恢复PB口的状态
              OUT       61H,AL      
              ADD       SI,2        ;指向下一个音符的频率
              ADD       BP,2        ;指向下一个音符的节拍
              JMP       MUSIC1_WEL
  DONE_WELS:  RET
            WELCOME_SOUND  ENDP
;--------------------------------------; WARNING_PIC子程序
 WARNING_PIC  PROC      NEAR
              MOV       AH,00H         ;设置屏幕显示方式
              MOV       AL,0DH
              INT       10H
              MOV       AH,0BH         ;设置调色板
              MOV       BH,0
              MOV       BL,1
              INT       10H

              MOV       DX,1EH         ;起始点设置
              MOV       CX,60H
     L1_WAR:  MOV       AH,0CH         ;设置绘图颜色
              MOV       AL,14
              INT       10H
              INC       DX
              CMP       DX,0AFH        ;绘图到行末尾结束
              JNZ       L1_WAR
              MOV       DX,1EH
              INC       CX
              CMP       CX,0E0H        ;绘图到列末尾结束
              JNZ       L1_WAR
              MOV       DX,1EH         ;起始点设置
              MOV       CX,60H
     L2_WAR:  MOV       AH,0CH         ;设置绘图颜色
              MOV       AL,6
              INT       10H
              INC       DX
              CMP       DX,0AFH        ;到行末尾结束
              JNZ       L2_WAR
     L3_WAR:  MOV       AH,0CH         ;设置绘图颜色
              MOV       AL,6           
              INT       10H
              INC       CX
              CMP       CX,0E0H        ;到列末尾结束
              JNZ       L3_WAR
              MOV       DX,1EH         ;起始点设置
              MOV       CX,60H
     L4_WAR:  MOV       AH,0CH
              MOV       AL,6           ;设置绘图颜色
              INT       10H
              INC       CX
              CMP       CX,0E0H        ;到列末尾结束
              JNZ       L4_WAR
     L5_WAR:  MOV       AH,0CH
              MOV       AL,6           ;设置绘图颜色
              INT       10H
              INC       DX
              CMP       DX,0AFH        ;到行末尾结束
              JNZ       L5_WAR
              MOV       DX,58H         ;打点
              MOV       CX,0C0H
              MOV       AH,0CH
              MOV       AL,6
              INT       10H
              MOV       DX,58H         ;打点
              MOV       CX,0D0H
              MOV       AH,0CH
              MOV       AL,6
              INT       10H
              MOV       DX,58H         ;打点
              MOV       CX,0C8H     
              MOV       AH,0CH
              MOV       AL,6
              INT       10H
              MOV       DX,1EH         ;起始点设置
              MOV       CX,46H
      L6_WAR: MOV       AH,0CH         ;设置绘图颜色(左对联)
              MOV       AL,4
              INT       10H
              INC       DX
              CMP       DX,0AFH        ;到行末尾结束
              JNZ       L6_WAR
              MOV       DX,1EH
              INC       CX
              CMP       CX,5BH         ;到行末尾结束
              JNZ       L6_WAR
              MOV       DX,1EH
              MOV       CX,0E5H
     L7_WAR:  MOV       AH,0CH         ;设置绘图颜色(右对联)
              MOV       AL,4
              INT       10H
              INC       DX
              CMP       DX,0AFH        ;到行末尾结束
              JNZ       L7_WAR
              MOV       DX,1EH
              INC       CX
              CMP       CX,0FAH        ;到行末尾结束
              JNZ       L7_WAR
              LEA       DI,M
              LEA       SI,N
      L8_WAR: MOV       DX,[DI]        ;汉字打点
              MOV       CX,[SI]
              MOV       AH,0CH
              MOV       AL,0
              INT       10H
              INC       DI		
              INC       SI
              CMP       [DI],0H
              JNZ       L8_WAR
              LEA       DI,M1
              LEA       SI,N1
      L9_WAR: MOV       DX,[DI]        ;警报符号打点
              MOV       CX,[SI]
              MOV       AH,0CH
              MOV       AL,0
              INT       10H
              INC       DI		
              INC       SI
              CMP       [DI],0H
              JNZ       L9_WAR
              LEA       DX,WARING
              MOV       AH,9
              INT       21H
              RET
 WARNING_PIC  ENDP
;--------------------------------------; WARNING_SOUND子程序
            WARNING_SOUND  PROC      NEAR

              LEA       SI,F         ;建立频率表指针
              LEA       BP,T         ;建立节拍表指针
 MUSIC1_WAR:  MOV       DI,[SI]      ;取频率
              CMP       DI,0         ;频率是否为0
              JE        DONE_WARS    ;是,转结束
              MOV       BX,DS:[BP]   ;不是,取对应的持续时间
              MOV       AL,0B6H      ;初始化定时器通道2的工作方式
              OUT       43H,AL      
              MOV       DX,12H       ;求计数器初值
              MOV       AX,3280H
              DIV       DI
              OUT       42H,AL       ;送计数器初值
              MOV       AL,AH
              OUT       42H,AL       
              IN        AL,61H       ;读PB口状态
              MOV       AH,AL
              OR        AL,03H       ;使PB0和PB1置1
              OUT       61H,AL      
 DELAY1_WAR:  MOV       CX,0FFFFH    ;延时
 DELAY2_WAR:  LOOP      DELAY2_WAR
              DEC       BX
              JNZ       DELAY1_WAR
              MOV       AL,AH        ;恢复PB口的状态
              OUT       61H,AL      
              ADD       SI,2         ;指向下一个音符的频率
              ADD       BP,2         ;指向下一个音符的节拍
              JMP       MUSIC1_WAR
  DONE_WARS:RET
            WARNING_SOUND  ENDP
;--------------------------------;SHENGYIN
       SHENGYIN  PROC      NEAR

              LEA       SI,F_D       ;建立频率表指针
              LEA       BP,T_D       ;建立节拍表指针
   MUSIC1_D:  MOV       DI,[SI]      ;取频率
              CMP       DI,0         ;频率是否为0
              JE        DONE_D       ;是,转结束
              MOV       BX,DS:[BP]   ;不是,取对应的持续时间
              MOV       AL,0B6H      ;初始化定时器通道2的工作方式
              OUT       43H,AL      
              MOV       DX,12H       ;求计数器初值
              MOV       AX,3280H
              DIV       DI
              OUT       42H,AL       ;送计数器初值
              MOV       AL,AH
              OUT       42H,AL       
              IN        AL,61H       ;读PB口状态
              MOV       AH,AL
              OR        AL,03H       ;使PB0和PB1置1
              OUT       61H,AL       
   DELAY1_D:  MOV       CX,0FFFFH    ;延时
   DELAY2_D:  LOOP      DELAY2_D
              DEC       BX
              JNZ       DELAY1_D
              MOV       AL,AH        ;恢复PB口的状态
              OUT       61H,AL      
              ADD       SI,2         ;指向下一个音符的频率
              ADD       BP,2         ;指向下一个音符的节拍
              JMP       MUSIC1_D
     DONE_D:RET
       SHENGYIN  ENDP
        CODE  ENDS
              END       START

⌨️ 快捷键说明

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