用汇编语言实现的N^3的函数子模块。 .386 .model flat,stdcall option casemap:none includelib msvcrt.lib printf PROTO C:sdword,:vararg public SubProc ;全局符号说明 extern result:qword ;外部引用 .data temp qword ? temp1 qword ? temp2 qword ? Msg byte 'result=%I64d',0ah,0 .code SubProc proc stdcall N ;子模块 push eax ;保护寄存器 push edx mov eax,N ;初始化eax寄存器 imul N ;eax=eax*N mov sdword ptr [temp],eax mov sdword ptr [temp+4],edx xor edx,edx cmp edx,N jl L1 jnl L2 L1: mov eax,N mul sdword ptr [temp] mov sdword ptr [temp1],eax mov sdword ptr [temp1+4],edx mov eax,N mul sdword ptr [temp+4] mov sdword ptr [temp2],eax mov sdword ptr [temp2+4],edx mov eax,sdword ptr [temp1] mov sdword ptr [result],eax mov eax,sdword ptr [temp1+4] add eax,sdword ptr [temp2] mov sdword ptr [result+4],eax jmp L3 L2: xor edx,edx sub edx,N mov N,edx xor edx,edx mov eax,N mul sdword ptr [temp] mov sdword ptr [temp1],eax mov sdword ptr [temp1+4],edx mov eax,N mul sdword ptr [temp+4] mov sdword ptr [temp2],eax mov sdword ptr [temp2+4],edx mov eax,sdword ptr [temp1] mov sdword ptr [result],eax mov eax,sdword ptr [temp1+4] add eax,sdword ptr [temp2] mov sdword ptr [result+4],eax mov eax,sdword ptr [result] not eax add eax,1 mov sdword ptr [result],eax mov eax,sdword ptr [result+4] not eax adc eax,0 mov sdword ptr [result+4],eax jmp L3 L3: invoke printf,offset Msg,result pop edx pop eax ret SubProc endp end 如果不出意外的话,像这种题目肯定也会涉及到大数运算的问题,所以一定要谨慎! 呵呵!