




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机组成原理实验报告MMX实现图片的淡出淡入学号: 姓名: 班级:软件班实验日期:2013年12月19日一、 实验目的利用MMX作为核心技术来实现图像的淡入淡出,并与不使用MMX的普通淡入淡出进行比较,以此锻炼用混合语言编程的能力。二、 实验分析MMX是MultiMedia sXtensions(多媒体扩展)的缩写,是第六代CPU芯片的重要特点。MMX技术是以一种SIMD(单指令多数据)样式来处理数据,可以一次在多个数据元素上同时完成加、乘等的运算。MMX主要是为多媒体程序设计而设置的,由于视频和音频数据一般是由8位或16位这样小的数据类型构成的大的阵列(例如在图形或图像中,每一屏都是由像素点所组成,每个像素或是每个像素的每个颜色分量红、绿、蓝都由8位数据表示),为对这些长度的数据提供并行操作的方便,MMX中定义了3种新的数据类型,每种数据类型都是64位长,由多个小的整数字段所组成:1. 压缩字节型:8个字节打包成一个74位长的数据;2. 压缩字型: 4个字打包成一个64位长的数据;3. 压缩双字型:2个32位的双字打包成一个64位长的数据。一般的影视节目常有淡出、淡入效果。即一屏图像逐渐溶解成另一屏图像。两个图像以一种加权平均组合:Result_pixel = A_pixel fade + B_pixel (1-fade)等价的公式为Result_pixel =(A_pixel- B_pixel) fade+ B_pixel其中fade为渐变因子,当fade从1到0逐渐改变时,就可产生渐变效果。对A、B两图像的每个像素位置完成上述计算,当fade值由1逐渐变为0(可按相应的8位整数组分成255阶),则产生一系列的图像帧,即实现了由A图像淡化到B图像的效果。三、 实验过程 本实验中在 visual studio 2010 平台上编写应用程序,通过比较采用C+内联汇编方式调用的MMX指令和调用API对图片像素逐个处理方法的处理效率,学习体会提高数据处理速度的方法。主要代码如下:(1) 使用MMX 技术的代码如下 int Mmx(LPBYTE Picture1,LPBYTE Picture2,LPBYTE Picture,int intWidth,int intHeight,int RGB_Bit,int i)int x,y;LPDWORD temp1,temp2,temp;int fade_Rate = i*128;/将fade值扩展为16位,以适应MMX的16位运算WORD fade14, fade24;fade10 =fade11 =fade12 =fade13 =32767 -fade_Rate ; /16位带符号数最大为32767fade20 =fade21 =fade22 =fade23 = fade_Rate; for(y=0;yintHeight;y+)temp1=(LPDWORD)(Picture1+intWidth*RGB_Bit/8*y);temp2=(LPDWORD)(Picture2+intWidth*RGB_Bit/8*y);temp =(LPDWORD)(Picture+intWidth*RGB_Bit/8*y);for(x=0;xintWidth;x+)_asm/Result_pixel=A_pixel*fade+B_pixel*(1-fade)=(A-B)*fade+Bpxormm7,mm7/将mm7寄存器清除为0movqmm2,fade1/将阶值装入mm2寄存器movqmm3,fade2movesi,temp1movedx,temp2movedi,tempmovdmm0,esi/取图像1的像素分量装入mm0寄存器movdmm1,edxpunpcklbwmm0,mm7 punpcklbwmm1,mm7/将字节解紧缩到16位pmulhwmm0,mm2/乘以阶值 (a*fade)pmulhwmm1,mm3/(b*(1-fade)paddwmm0,mm1packuswbmm0,mm7/紧缩16位到字节movdedi,mm0temp1+;temp2+;temp+;_asm EMMSreturn 0;(2)未使用MMX 技术的代码如下int Mmx(LPBYTE Picture1,LPBYTE Picture2,LPBYTE Picture,int intWidth,int intHeight,int RGB_Bit,int i)int x,y;LPBYTE temp1,temp2,temp;BYTE fade_Rate = (BYTE)i;/将fade值扩展为16位,以适应MMX的16位运算BYTE fade1, fade2;fade1 =255 -fade_Rate ; /16位带符号数最大为32767fade2 = fade_Rate; for(y=0;yintHeight;y+)temp1=(LPBYTE)(Picture1+intWidth*RGB_Bit/8*y);temp2=(LPBYTE)(Picture2+intWidth*RGB_Bit/8*y);temp =(LPBYTE)(Picture+intWidth*RGB_Bit/8*y);for(x=0;x3*intWidth;x+)_asm mov dh,fade1 mov dl,fade2 mov ecx,temp1 mov bh,ecx mov esi,temp2 mov bl,esi mov al,dh mul bh mov edi,temp mov edi,ah mov al,dl mul bl add ah,edi mov edi,ahtemp1+;temp2+;temp+;_asm EMMSreturn 0;(3)主函数代码void Test_MMX(int intWidth, int intHeight, int RGB_Bit, int Time)_try_asm EMMS_except(EXCEPTION_EXECUTE_HANDLER)HDC hDC;LPBITMAPINFO lpInfo; /指向图片对象的长指针类型int intSize,i; LPBYTE lpBuf1,lpBuf2,lpBuf; /指向字节(串)的指针 HFILE Picture1,Picture2;Picture1=_lopen(test3.bmp,OF_READ); /返回打开文件的句柄Picture2=_lopen(test4.bmp,OF_READ);intSize=GetFileSize(HANDLE)Picture1,NULL);/返回文件长度lpBuf1=(LPBYTE)LocalAlloc(LPTR,intSize);/返回新分配的内存地址,从堆中分配指定大小的字节数lpBuf2=(LPBYTE)LocalAlloc(LPTR,intSize);lpBuf=(LPBYTE)LocalAlloc(LPTR,intSize);_lread(Picture1,lpBuf1,intSize); /指定一个内存块的指针,数据将读入这个内存块_lread(Picture2,lpBuf2,intSize);_lclose(Picture1);_lclose(Picture2);memcpy(lpBuf,lpBuf1,intSize);lpInfo = (LPBITMAPINFO)(lpBuf+0x0e);hDC = GetDC(NULL);for(i=0;i255;i+) /默认是图像按255阶渐变,即 让fade的值变化255次Mmx(lpBuf1+0x60,lpBuf2+0x60,lpBuf+0x60,intWidth,intHeight,RGB_Bit,i);Sleep(Time);/指定从lpBuf+0x60这一行开始扫描SetDIBitsToDevice(hDC,300,150,intWidth,intHeight,0,0,0,480,lpBuf+0x60,lpInfo,DIB_RGB_COLORS);/该函数使用DIB位图和颜色数据对与目标设备环境相关的设备上的指定矩形中的像素进行设置。LocalFree(lpBuf1);LocalFree(lpBuf2);ReleaseDC(NULL,hDC);using namespace std;int _tmain(int argc, _TCHAR* argv)DWORD start_time=GetTickCount();Test_MMX(640,480,24,8); DWORD end_time=GetTickCount();cout使用MMX用时:(end_time-start_time)ms!endl;/输出运行时间system(pause); return 0;(4)说明从上面的代码可以看出,两者的主要区别在于函数int Mmx的不同,前者使用了MMX技术,后者使用普通的汇编指令。四、实验结果第一帧
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行营销面试题目及答案
- 银行行长竞聘试题及答案
- 银行信贷考试题库及答案
- 园林技术专业试题及答案
- 稽查专业考试题库及答案
- 湖南省邵阳市2025-2026学年高一上学期9月拔尖联考(创新班)数学试卷(含答案)
- 河北省张家口市宣化区2024-2025学年七年级下学期7月期末考试数学试卷(人教版)(含答案)
- 幕墙栏杆压顶施工方案
- 福建省泉州市安溪县2024-2025学年高一上学期11月期中生物试卷(含答案)
- 彭州围堰施工方案公示
- 2025年半导体制造用胶膜市场调查报告
- 家长学校亲子沟通课件
- 超声科主任竞聘演讲稿
- 工地工伤预防培训
- 辽宁省2022-2024年中考满分作文134篇
- (完整)夏季防暑降温教育培训试题及答案
- 复卷机安全操作规程
- 马克思介绍课件
- JJF 2252-2025 机动车检测用涡流式金属探伤仪校准规范
- 2025秋人教版(2024)八年级上册英语课件 Unit 1 Happy Holiday (第1课时) Section A 1a- 1d
- 药品经营质量管理规范培训内容
评论
0/150
提交评论