打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
汇编笔记1

/* ======== volume.h ======== */
#ifndef __VOLUME_H
#define __VOLUME_H#ifndef TRUE
#define TRUE 1
#endif
#define BUFSIZE 0x64
#define FRAMESPERBUFFER 10
#define MINGAIN 1
#define MAXGAIN 10
#define MINCONTROL 0
#define MAXCONTROL 19
#define BASELOAD 1
#endif /* __VOLUME_H */
/*一些宏定义,定义了一些常量*/

#include <stdio.h>
#include "volume.h"

/*定义全局变量 */
int inp_buffer[BUFSIZE]; /* 设置输入输出数据缓冲区 inp_buffer 和 out_buffer 大小为 0x64*/
int out_buffer[BUFSIZE];
int gain = MINGAIN; /* 增益设置,MINGAIN代表1,在volume.h中定义的 */
unsigned int processingLoad = BASELOAD; /*BASELOAD大小为1,也是在volume.h中定义的*/
extern void load(unsigned int loadvalue); /*该函数是一个汇编的处理函数,具体分析见后文*/
static int processing(int *input, int *output);
static void dataIO(void); /*定义了三个函数load、processing、dataIO*/

/* ======== main ======== */

void main()
{
int *input = &inp_buffer[0]; /*指针赋初值*/
int *output = &out_buffer[0];
puts("volume example started\n"); /*输出一句话*/
/* 下面是一个无限循环 */
while(TRUE)
{
/* 使用探测器来连接住机上的文件. */
dataIO(); /*调用dataIO函数,实际上,dataIO是一个空函数。*/
processing(input, output); /*调用processing函数*/
} /*dataIO是一个空函数,实际上主函数完成的是对processing函数的无限次调用。*/
}

/* ======== processing ======== *

对输入信号进行数字信号处理变换.
参数:输入输出缓冲区的地址 */
static int processing(int *input, int *output) /*函数processing*/
{
int size = BUFSIZE;

while(size--){
*output++ = *input++ * gain;
} /*根据输入信号和gain大小,对输出信号进行赋值*/

/* load辅助程序*/
load(processingLoad);

return(TRUE);
}

/* ======== dataIO ======== *
读入输入信号,写输出信号 */
static void dataIO()
{
return;
}

;load函数,是一个保存在load.asm中的汇编函数。这里,就涉及到混编。DSP处理程序的一般形式在这里就看到了。过程的控制,使用C语言,利用高级语言较强的逻辑功能。处理的过程,则使用汇编语言,以提高处理速度,达到实时信号处理的要求。简单介绍一下load函数,这里不讲汇编语言的语言及其格式了,只说明一下这个函数的作用。该函数通过执行N*loadvalue来模仿在DSP上的一个负载。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
最便捷、最强大、速度最快的C++序列化框架2
利用ffmpeg 解码ps网络流视频
数组中第二大的树
WinCE 输出log信息到文件
framebuffer驱动全篇
系统调用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服