计算机组织与结构实验MMX实验报告Word文档格式.docx

上传人:b****6 文档编号:16153122 上传时间:2022-11-21 格式:DOCX 页数:18 大小:287KB
下载 相关 举报
计算机组织与结构实验MMX实验报告Word文档格式.docx_第1页
第1页 / 共18页
计算机组织与结构实验MMX实验报告Word文档格式.docx_第2页
第2页 / 共18页
计算机组织与结构实验MMX实验报告Word文档格式.docx_第3页
第3页 / 共18页
计算机组织与结构实验MMX实验报告Word文档格式.docx_第4页
第4页 / 共18页
计算机组织与结构实验MMX实验报告Word文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

计算机组织与结构实验MMX实验报告Word文档格式.docx

《计算机组织与结构实验MMX实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机组织与结构实验MMX实验报告Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

计算机组织与结构实验MMX实验报告Word文档格式.docx

MMX指令是为高速处理多媒体数据而设计的一组汇编指令,它提供了8个64位寄存器

【实验代码】

本实验中在visualC++6.0平台上编写MFC应用程序,通过比较采用C++内联汇编方式调用的MMX指令和调用API对图片像素逐个处理方法的处理效率,学习体会提高数据处理速度的方法。

主要代码如下:

(1)未使用MMX技术的代码如下,本程序采用的是像素描点的方法,一共225针,分十次扫描完毕

实现的淡入淡出效果:

//MMX1View.cpp:

implementationoftheCMMX1Viewclass

//

#include"

stdafx.h"

MMX1.h"

MMX1Doc.h"

MMX1View.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

//CMMX1View

IMPLEMENT_DYNCREATE(CMMX1View,CView)

BEGIN_MESSAGE_MAP(CMMX1View,CView)

//{{AFX_MSG_MAP(CMMX1View)

//NOTE-theClassWizardwilladdandremovemappingmacroshere.

//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!

//}}AFX_MSG_MAP

//Standardprintingcommands

ON_COMMAND(ID_FILE_PRINT,CView:

:

OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT,CView:

ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView:

OnFilePrintPreview)

END_MESSAGE_MAP()

//CMMX1Viewconstruction/destruction

CMMX1View:

CMMX1View()

{

//TODO:

addconstructioncodehere

HBITMAP

hBitmap=(HBITMAP)LoadImage(NULL,_T("

1.bmp"

),IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);

this->

m_Bitmap.Attach(hBitmap);

BITMAPBM;

m_Bitmap.GetBitmap(&

BM);

//目标图像

tarhBitmap=(HBITMAP)LoadImage(NULL,_T("

4.bmp"

m_tarBitmap.Attach(tarhBitmap);

BITMAPBM2;

m_tarBitmap.GetBitmap(&

BM2);

//////////////////////////////////////////////////////////////////////

m_newptr=newBYTE[BM.bmWidth*BM.bmHeight*3];

m_newptr2=newBYTE[BM.bmWidth*BM.bmHeight*3];

/////////////////////////////////////////////////////////////////////

BYTE*temp=(BYTE*)BM.bmBits;

BYTE*temp2=(BYTE*)BM2.bmBits;

///////////////////////////////////////////////////////////////////////

if(this->

m_newptr==NULL)

return;

BYTE*pSrc=NULL;

BYTE*pDes=NULL;

BYTE*pSrc2=NULL;

BYTE*pDes2=NULL;

for(inth=0;

h<

BM.bmHeight;

h++)

{

for(intw=0;

w<

BM.bmWidth;

w++)

{

pSrc=temp+w*3+h*BM.bmWidthBytes;

pDes=this->

m_newptr+w*3+h*BM.bmWidthBytes;

//按位复制

memcpy(pDes,pSrc,3);

pSrc2=temp2+w*3+h*BM.bmWidthBytes;

pDes2=this->

m_newptr2+w*3+h*BM.bmWidthBytes;

memcpy(pDes2,pSrc2,3);

}

}

m_BM.bmBitsPixel=BM.bmBitsPixel;

m_BM.bmHeight=BM.bmHeight;

m_BM.bmPlanes=BM.bmPlanes;

m_BM.bmType=BM.bmType;

m_BM.bmWidth=BM.bmWidth;

m_BM.bmWidthBytes=BM.bmWidthBytes;

}

~CMMX1View()

BOOLCMMX1View:

PreCreateWindow(CREATESTRUCT&

cs)

ModifytheWindowclassorstylesherebymodifying

//theCREATESTRUCTcs

returnCView:

PreCreateWindow(cs);

//CMMX1Viewdrawing

voidCMMX1View:

OnDraw(CDC*pDC)

CMMX1Doc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

adddrawcodefornativedatahere

BITMAPBM;

BITMAPBM2;

CDCMemDC;

MemDC.CreateCompatibleDC(NULL);

/////////////////////////////////////////

CStringcount;

for(intfade=0;

fade<

=250;

fade+=10)

//Ax+(1-x)B=(A-B)x+B

w++)//wbyte3->

1w/3

pSrc=(BYTE*)BM.bmBits+w*3+h*BM.bmWidthBytes;

pSrc2=(BYTE*)BM2.bmBits+w*3+h*BM2.bmWidthBytes;

intblue=(int)*pSrc;

intgreen=(int)*(pSrc+1);

intred=(int)*(pSrc+2);

inttarblue=(int)*pSrc2;

inttargreen=(int)*(pSrc2+1);

inttarred=(int)*(pSrc2+2);

intrealblue=(blue-tarblue)*((float)fade/255.0)+tarblue;

intrealred=(red-tarred)*((float)fade/255.0)+tarred;

intrealgreen=(green-targreen)*((float)fade/255.0)+targreen;

pDC->

SetPixel(w,BM.bmHeight-h,RGB(realred,realgreen,realblue));

count.Format("

%d"

fade);

pDC->

TextOut(800,100,count);

}//

//CMMX1Viewprinting

OnPreparePrinting(CPrintInfo*pInfo)

//defaultpreparation

returnDoPreparePrinting(pInfo);

OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)

addextrainitializationbeforeprinting

OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)

addcleanupafterprinting

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1