| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2592 人关注过本帖
标题:一个汇编程序,谁能给加点功能啊?
只看楼主 加入收藏
hhsc
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-7-3
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
一个汇编程序,谁能给加点功能啊?
;=================================================================
; SOUND.asm
; 电子发声设计实验
;=================================================================

; 端口定义
IOY3            EQU 06C0H

MY8254_COUNT0    EQU IOY3+00H   ;8254计数器0端口地址
MY8254_COUNT1    EQU IOY3+02H   ;8254计数器1端口地址
MY8254_COUNT2    EQU IOY3+04H   ;8254计数器2端口地址
MY8254_MODE    EQU IOY3+06H   ;8254控制寄存器端口地址
                              
STACK1    SEGMENT STACK
        DW 256 DUP(?)
STACK1    ENDS

DATA    SEGMENT
FREQ_LIST  DW  371,495,495,495,624,556,495,556,624      ;频率表
           DW  495,495,624,742,833,833,833,742,624
            DW  624,495,556,495,556,624,495,416,416,371
            DW  495,833,742,624,624,495,556,495,556,833
            DW  742,624,624,742,833,990,742,624,624,495
           DW  556,495,556,624,495,416,416,371,495,0
TIME_LIST  DB    4,  6,  2,  4,  4,  6,  2,  4,  4      ;时间表
            DB    6,  2,  4,  4, 12,  1,  3,  6,  2
            DB    4,  4,  6,  2,  4,  4,  6,  2,  4,  4
            DB   12,  4,  6,  2,  4,  4,  6,  2,  4,  4
           DB    6,  2,  4,  4, 12,  4,  6,  2,  4,  4
            DB    6,  2,  4,  4,  6,  2,  4,  4,  12
DATA    ENDS

CODE    SEGMENT
        ASSUME  CS:CODE,DS:DATA

START:            MOV AX,DATA
        MOV  DS,AX

        MOV DX,MY8254_MODE          ;初始化8254工作方式
        MOV AL,36H                  ;定时器0、方式3
        OUT DX,AL

BEGIN:            MOV SI,OFFSET FREQ_LIST     ;装入频率表起始地址
        MOV DI,OFFSET TIME_LIST     ;装入时间表起始地址

PLAY:            MOV DX,0FH                  ;输入时钟为1MHz,1M = 0F4240H  
        MOV AX,4240H               
        DIV WORD PTR [SI]           ;取出频率值计算计数初值,0F4240H / 输出频率  
        MOV DX,MY8254_COUNT0
        OUT DX,AL                   ;装入计数初值
        MOV AL,AH
        OUT DX,AL

        MOV DL,[DI]                 ;取出演奏相对时间,调用延时子程序
        CALL DALLY

        ADD SI,2
        INC DI
        CMP WORD PTR [SI],0         ;判断是否到曲末?
        JE  BEGIN

        JMP  PLAY

DALLY    PROC                        ;延时子程序
D0:        MOV CX,0010H
D1:        MOV AX,0FF0H
D2:        DEC AX
        JNZ D2
        LOOP D1
        DEC DL
        JNZ D0

        RET
DALLY    ENDP

CODE    ENDS
        END START
给加些时间设定、开始、结束的控制符
搜索更多相关主题的帖子: 计数器 寄存器 电子 
2013-07-03 10:00
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6814
专家分:42393
注 册:2010-12-16
收藏
得分:20 
转到汇编板块会是否会好点?

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-07-09 12:10
快速回复:一个汇编程序,谁能给加点功能啊?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020339 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved