64,646
社区成员
发帖
与我相关
我的任务
分享
int array[10][20];
int main(){
for(int i=0; i<10; i++)
for(int j=0; j<20; j++)
array[i][j]=i*j;
for(int i=0; i<10; i++)
for(int j=0; j<20; j++)
array[i][j]++; //ÏÔʾ²åÈë»ã±àÖ¸ÁîÀ´´úÌæÕâÌõÓï¾ä
//(ÓÃinc array[i][j]»òadd array[i][j],1ÕâÀàµÄ)
}
_asm{
mov ecx,dword ptr [ebp-4]
imul ecx,ecx,50h
mov edx,dword ptr [j]
mov eax,dword ptr [ecx+edx*4+4225D8h]
add eax,1
mov ecx,dword ptr [ebp-4]
imul ecx,ecx,50h
mov edx,dword ptr [j]
mov dword ptr [ecx+edx*4+4225D8h],eax
}
这段代码的作用相当于array[i][j]++;
#include <stdio.h>
int array[10][20];
int main(){
for(int i=0; i<10; i++)
for(int j=0; j<20; j++)
_asm{
mov ecx,dword ptr [ebp-4]
imul ecx,ecx,50h
mov edx,dword ptr [j]
mov eax,dword ptr [ecx+edx*4+4225D8h]
add eax,1
mov ecx,dword ptr [ebp-4]
imul ecx,ecx,50h
mov edx,dword ptr [j]
mov dword ptr [ecx+edx*4+4225D8h],eax
}
for( i=0; i<10; i++)
for(int j=0; j<20; j++)
array[i][j]++; //??ê?2?è???±à??á?à′′úì??aì?ó???
//(ó?inc array[i][j]?òadd array[i][j],1?aààμ?)
return 0;
}
int array[10][20];
int main(){
for(int i=0; i<10; i++)
for(int j=0; j<20; j++)
array[i][j]=i*j;
for(int i=0; i<10; i++)
for(int j=0; j<20; j++)
array[i][j]++; //插入汇编指令替代这条语句
//要求加法部分必须是单条汇编语句
//(inc array[i][j] 或add array[i][j],这一类的)
//计算偏移量就没有要求了
}