΢»úÔ­Àí¼°Ó¦ÓÃAÊÔÌâ¿â¼°´ð°¸Ð޸İæ - ͼÎÄ

; 2. for i=x/2 downto 2 do ; if x mod i=0 then {flag=0;break;} ; ×¢ÒâºÏÀíµÄ·ÖÅäʹÓüĴæÆ÷£¬ecx=i£¬¼æ×ö³ýÊý¡£ ; edx£¬eax×ö±»³ýÊý£¬ebx=flagµÄµØÖ·£¬edi=x£¬ÓÃÓÚÔÝ´æx push ebp mov ebp,esp ; ½¨Á¢·ÃÎÊÕ»²ÎÊýµÄÖ¸Õë»ù×¼ push eax ; ±£»¤×Ó³ÌÐòÖÐҪʹÓõļĴæÆ÷ push ebx push ecx push edx push edi mov ebx,[ebp+12] ;±äÁ¿flagµÄµØÖ· mov byte ptr [ebx],1 ;flag=1 mov eax,[ebp+8] ;eax=x mov edi,eax ;edi=x£¬ÓÃÓÚÔÝ´æx mov ecx,eax shr ecx,1 ;ecx=x/2 .while (ecx>=2) mov eax,edi ;eax=x£¬×¢Ò⣺´Ë¾ä¼«Òשµô!µ¼ÖÂÂß¼­´íÎó¡£ xor edx,edx ;±»³ýÊýËÍedx£¬eax,32λ³ý·¨ div ecx ;divÖ¸ÁîÖ´Ðкóeax=ÉÌ£¬edx=ÓàÊý or edx,edx ;cmp edx,0 jnz next ;if eax mod ecx<>0 then goto next mov byte ptr [ebx],0 ;flag=0 jmp restore next: dec ecx .endw restore: pop edi ; »Ö¸´×Ó³ÌÐòÖÐʹÓùýµÄ¼Ä´æÆ÷ pop edx pop ecx pop ebx pop eax pop ebp ret 2*4 ;ÇåÀíÕ»ÖеIJÎÊý prime endp end main ;end of assembly 11. ±à³Ìдһ¸öÃûΪGcdµÄÇóÁ½¸öÊý×î´ó¹«Ô¼Êý×Ó³ÌÐò£¬Ö÷×Ó³ÌÐò¼äµÄ²ÎÊý´«µÝͨ¹ý¶ÑÕ»Íê³É¡£µ÷ÓÃGcd×Ó³ÌÐòÇó³öÈý¸öË«×Ô±äÁ¿£ºdvar1¡¢dvar2Óëdvar3µÄ×î´ó¹«Ô¼Êý²¢Êä³ö¡£ÏÔʾһ¸öÎÞ·ûºÅÊýµÄ×Ó³ÌÐòΪ£ºdispuid£¬Èë¿Ú²ÎÊý£ºEAX=ÒªÏÔʾÎÞ·ûºÅÊýµÄÖµ¡£ ; Win32 Console Application ; ÀûÓÃ×Ó³ÌÐòÇó3¸öÎÞ·ûºÅÕûÊýµÄ×î´ó¹«Ô¼Êý¡£ ; Ä¿µÄ:ѧϰ×Ó³ÌÐòµÄ¹¹ÔìÓë²ÎÊýµÄ´«µÝ·½·¨¡£ 31

.686 .model flat,stdcall option casemap:none includelib msvcrt.lib printf PROTO C : dword,:vararg .data dvar1 dword 2012 dvar2 dword 128 dvar3 dword 456 dgcd dword ? ;´æ·Å2¸öÎÞ·ûºÅÕûÊýµÄ×î´ó¹«Ô¼Êý fmtStr byte ' gcd(%d,%d,%d)=%d',13,10,0 .code main proc push dvar1 push dvar2 ;²ÎÊýdvar1,dvar2½øÕ»£¬´«Öµ push offset dgcd ;dgcdµÄµØÖ·½øÕ»£¬´«µØÖ· call Gcd ;dgcd=dvar1,dvar2µÄ×î´ó¹«Ô¼Êý push dvar3 push dgcd ;²ÎÊýdvar3,dgcd½øÕ»£¬´«Öµ push offset dgcd ;dgcdµÄµØÖ·½øÕ»£¬´«µØÖ· call Gcd invoke printf,offset fmtStr,dvar1,dvar2,dvar3,dgcd ret ;return to Windows main endp ;end of main Gcd proc ; function: Çó2¸öÎÞ·ûºÅÕûÊýµÄ×î´ó¹«Ô¼Êý¡£ ; Receives: ´ÓÕ»ÖлñÈ¡ÎÞ·ûºÅÕûÊýa,b¼° ; ´æ·Å×î´ó¹«Ô¼Êý±äÁ¿gcdµÄµØÖ· ; Returns: gcd=ÎÞ·ûºÅÕûÊýa,bµÄ×î´ó¹«Ô¼Êý¡£ ; ×¢Ò⣺[ebp+8]ÊÇ×îºóÒ»¸öѹÈëÕ»ÖеIJÎÊý! ; ÒÔ[ebp+8]Ϊ»ù×¼£¬´ÓÕ»ÖлñÈ¡ÆäËüµÄ²ÎÊý¡£ ; Ë㷨˼Ï룺²ÉÓÃÅ·¼¸ÀïµÃËã·¨¡£gcd(a,0)=a; ; gcd(a,b)=gcd(b,a mod b) ; Ëã·¨ÃèÊö£º ; 1. while b<>0 do ; { r=a mod b;a=b;b=r;} ; 2. gcd=a; ; ×¢ÒâºÏÀíµÄ·ÖÅäʹÓüĴæÆ÷£¬edx£¬eax×ö±»³ýÊý ; ebx=gcdµÄµØÖ·£¬eax=a,ecx=b push ebp mov ebp,esp ; ½¨Á¢·ÃÎÊÕ»²ÎÊýµÄÖ¸Õë»ù×¼ push eax ; ±£»¤×Ó³ÌÐòÖÐҪʹÓõļĴæÆ÷ push ebx push ecx 32

push edx mov ebx,[ebp+8] ;ebx=±äÁ¿gcdµÄµØÖ· mov ecx,[ebp+12] ;ecx=b mov eax,[ebp+16] ;eax=a .while (ecx!=0) xor edx,edx ;±»³ýÊýËÍedx£¬eax,32λ³ý·¨ div ecx ;divÖ¸ÁîÖ´Ðкóeax=ÉÌ£¬edx=ÓàÊý mov eax,ecx ;a=b mov ecx,edx ;b=r,edx=ÓàÊý .endw mov [ebx],eax ;gcd=×î´ó¹«Ô¼Êý restore: pop edx ; »Ö¸´×Ó³ÌÐòÖÐʹÓùýµÄ¼Ä´æÆ÷ pop ecx pop ebx pop eax pop ebp ret 3*4 ;ÇåÀíÕ»ÖеIJÎÊý Gcd endp ;end of Gcd end main ;end of assembly 12. ÔÚÒ»¸öÒÑÖª³¤¶ÈµÄ×Ö·û´®ÖвéÕÒÊÇ·ñ°üº¬¡°BUG¡±×Ó×Ö·û´®¡£Èç¹û´æÔÚ£¬ÏÔʾ¡°Y¡±£¬·ñ ÔòÏÔʾ¡°N¡±¡£ ÏÔʾһ¸ö×Ö·ûµÄ×Ó³ÌÐòΪ£ºdispc£¬Èë¿Ú²ÎÊý£ºAL=ÒªÏÔʾ¸ö×Ö·ûµÄSACIIÂë¡£ ; Win32 Console Application ; ´®Ä£Ê½Æ¥ÅäËã·¨£¬Çó×Ó´®ÔÚÔ´´®ÖеÚÒ»´Î³öÏֵįðʼλÖᣠ; Èô×Ó´®ÔÚÔ´´®ÖгöÏÖÔòÏÔʾ¡°Y¡±,·ñÔòÏÔʾ¡°N¡±¡£ ; Ë㷨˼Ï룺²ÉÓÃÈ˹¤´®Æ¥ÅäµÄ·½·¨£¬¾ÍÊÇ´Ó×óÏòÓÒɨÃ裬 ; µ±Ô´´®Ã»ÓнáÊøÊ±£¬´ÓÔ´´®µÄµÚi¸ö×Ö·û¿ªÊ¼Óë×Ó´®½øÐбȽϣ¬ ; ÈôÏàµÈ£¬Ôò¼ÌÐø±È½ÏºóÐø×Ö·û£¬·ñÔò´ÓÔ´´®µÄµÚi+1 ; ¸ö×Ö·û¿ªÊ¼ÖØÐÂÓë×Ö´®½øÐбȽϡ£ÕâÖÖËã·¨µÄЧÂʷdz£µÍ£¬ ; Ò»ÖÖÆÓËØ´®Ä£Ê½Æ¥ÅäËã·¨¸Ä½øµÄËã·¨³ÆÎªKMPËã·¨¡£ ; Ëã·¨ÃèÊö£º ; 1. i=j=0; Êý×éϱê´Ó0¿ªÊ¼,sStrΪԴ´®£¬tStrΪ×Ó´® ; 2. while (i

; ²ÉÓÃÏà¶ÔѰַ´¦ÀíÊý×é¡£ ; Q:Èô½«´ËËã·¨¸ÄΪ×Ó³ÌÐò£¬ÈçºÎÐÞ¸Ä? Include io32.inc .data sStr byte 'If you find any error in the program, you can DEBUG it.' tStr byte 'BUG' sLen equ sizeof sStr tLen equ sizeof tStr .code main proc xor esi,esi ;i=esi mov edi,eax ;j=edi .while (esi

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)