// Assemble.TestCode.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include void AsmFunc(int* pAddr); void DoHist(int* pHist, short* pData, int nDataLen) { memset(pHist, 0, sizeof(int)*65536); for(int i = 0; i < nDataLen; i++) { pHist[pData[i]+32768]++; } } int _tmain(int argc, _TCHAR* argv[]) { DWORD nData = 20, nData1 = 1; int pHist[65536] = {0}; short* pshData = new short[1280*1024 + 4096]; for(int i = 0; i < 1280*1024; i++) { pshData[i] = i+1 % 32768; } //DoHist(pHist, pshData, 1280*1024); //delete [] pshData; //pshData = NULL; char cData = 1; _asm { inc nData1 ;nData1 mov esi, pshData movzx eax, DWORD PTR [esi] add esi,2 movzx eax, DWORD PTR [esi] mov eax, type nData1 mov eax, type nData1 movzx eax,DWORD PTR [nData1] ;xchg eax, ebx ;[nData1] mov eax,10Q add eax,10H //mov nData, eax } //AsmFunc(&nData); delete [] pshData; pshData = NULL; int jj = 0; getchar(); return 0; } void AsmFunc(int* pAddr) { _asm { ; 程序描述: ; 作者: ; 创建日期: //push eax //push ebx //push ecx tag1: mov eax,0x0F mov ebx,0x10 add eax,ebx mov ecx,pAddr mov [ecx],eax //pop ecx //pop ebx //pop eax } }