计算机组织与结构实验MMX实验报告Word文档格式.docx
- 文档编号:16153122
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:18
- 大小:287KB
计算机组织与结构实验MMX实验报告Word文档格式.docx
《计算机组织与结构实验MMX实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机组织与结构实验MMX实验报告Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组织 结构 实验 MMX 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)