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

·¢²¼Ê±¼ä : ÐÇÆÚ¶þ ÎÄÕÂ΢»úÔ­Àí¼°Ó¦ÓÃAÊÔÌâ¿â¼°´ð°¸Ð޸İæ - ͼÎĸüÐÂÍê±Ï¿ªÊ¼ÔĶÁ

sub dl,20h ; and dl,5fh mov [esi],dl next: inc esi ; Ö¸ÏòÏÂÒ»¸ö×Ö·û loop again invoke printf,offset fmtStr,offset msg ret ;return to Windows main endp ;end of main end main ;end of assembly 7. arrayÊÇÒ»ÎÞ·ûºÅÊýÊý×é,Êý¾Ý¶ÎµÄ¶¨ÒåÈçÏ¡£ÒªÇ󣺱à³Ìдһ¸öÍêÕûµÄ³ÌÐòÇó³öÊý×éÔªËØÖÐżÊýµÄºÍ£¬²¢½«Ëü´æÈëesumµ¥ÔªÖС£ .data array dword 12,34,123,78,43,234,79,86,98,20 esum dword ? ; Win32 Console Application ; ÇóÊý×éÖÐËùÓÐżÊýÔªËصĺ͡£ ; Ä¿µÄ:ѧϰ¼òµ¥µÄ¹ØÓÚ·ÖÖ§ÓëÊý×é´¦ÀíµÄËã·¨¡£ ; Ëã·¨ÃèÊö ; 1. esum=0; ; 2. for i=0 to n-1 do ; if a[i] is evennunber then esum=esum+a[i]; ; ÅжÏżÊý£¬²ÉÓà test Ö¸Áî²âÊÔ×îµÍλ¡£ ; ºÏÀí·ÖÅä¼Ä´æÆ÷:²ÉÓÃloopÑ­»·£¬ecx=lengthof array ; esum=eax=0£¬esi=0£¬×öϱê,²ÉÓôø±ÈÀýÒò×ÓµÄÏà¶ÔÑ°Ö·´¦ÀíÊý×é¡£ .686 .model flat,stdcall option casemap:none includelib msvcrt.lib printf PROTO C : dword,:vararg .data array dword 12,34,123,78,43,234,79,86,98,20 esum dword ? fmtStr byte ' esum=%d',13,10,0 ;¸ñʽÃèÊö´® .code main proc mov ecx,lengthof array xor eax,eax ;esum=eax=0 mov esi,eax ;Êý×éϱê again: mov ebx,array[esi*4] test ebx,1 jnz next ;if a[i] is evennunber then esum=esum+a[i]; 27

add eax,ebx ;×¢Ò⣺ת»»³É»ã±àÓïÑÔʱ£¬²âÊÔµÄÊDz»ÊÇżÊýʱÔòÈ¡ÏÂÒ»¸öÊý²âÊÔ¡£ next: inc esi loop again mov esum,eax invoke printf,offset fmtStr,esum ret ;return to Windows main endp ;end of main end main ;end of assembly 8. ¡°»ØÎÄ´®¡±ÊÇÒ»¸öÕý¶ÁºÍ·´¶Á¶¼Ò»ÑùµÄ×Ö·û´®£¬±ÈÈç¡°eye¡±¡¢¡°level¡±¡¢¡°noon¡±µÈ¡£Çëдһ¸ö³ÌÐò²âÊÔÒ»×Ö·û´®ÊÇ·ñÊÇ¡°»ØÎÄ¡±£¬ ÊÇ¡°»ØÎÄ¡±ÔòÏÔʾ¡°Y¡±,·ñÔòÏÔʾ¡°N¡±¡£ ÏÔʾһ¸ö×Ö·ûµÄ×Ó³ÌÐòΪ£ºdispc£¬Èë¿Ú²ÎÊý£ºAL=ÒªÏÔʾ¸ö×Ö·ûµÄSACIIÂë¡£ ; Win32 Console Application palindrome ; ²âÊÔÒ»×Ö·û´®ÊÇ·ñÊÇ¡°»ØÎÄ¡±£¬ ÊÇ¡°»ØÎÄ¡±ÔòÏÔʾ¡°Y¡±,·ñÔòÏÔʾ¡°N¡±¡£ ; Ëã·¨ÃèÊö£º ; left,right·Ö±ðÖ¸Ïò´®µÄµÚÒ»¸öºÍ×îºóÒ»¸öÔªËØ£¬²ÉÓÃÊ×β±È½Ï¡£ ; 1. left=0,right=n-1 ,flag='Y' £» ; 2. while lefta[right--] then ; { flag= 'N'; break;} ; 3. printf flag ; ºÏÀí·ÖÅä¼Ä´æÆ÷:left=esi,right=edi ,flag=al='Y' ; ²ÉÓÃÏà¶ÔÑ°Ö·´¦ÀíÊý×é¡£ include io32.inc .data msg byte 'level',0 count equ lengthof msg .code main proc mov esi,0 ;leftÖ¸Õë mov edi,count-2 ;rightÖ¸Õë,´®³¤²»°üÀ¨½áÊø±êÖ¾0 mov al,'Y' ; flag=al='Y' .while (esi

call dispcrlf ret ;return to Windows main endp ;end of main end main ;end of assembly 9. »ØÎÄÊÇÖ¸Õý¶ÁºÍ·´¶Á¶¼Ò»ÑùµÄÊý»òÎı¾¡£ÀýÈ磺11¡¢121¡¢12321µÈ£¬±àд³ÌÐò£¬Çó10µ½10000Ö®¼äËùÓлØÎÄÊý²¢Êä³ö¡£ÏÔʾһ¸öÎÞ·ûºÅÊýµÄ×Ó³ÌÐòΪ£ºdispuid£¬Èë¿Ú²ÎÊý£ºEAX=ÒªÏÔʾÎÞ·ûºÅÊýµÄÖµ¡£ ; Win32 Console Application ; Çó10µ½10000Ö®¼äËùÓлØÎÄÊý²¢Êä³ö¡£ ; Ä¿µÄ:ѧϰÈçºÎÀûÓÃÌõ¼þתÒÆÖ¸Áî¹¹ÔìÌõ¼þÑ­»·½á¹¹,¶àÖØÑ­»·µÄ¹¹Ôì·½·¨¡£ ; Ë㷨˼Ïë:²ÉÓÃdivÖ¸Áî°ÑÒ»¸öÕûÊýNµÄÿһλ·ÖÀë³öÀ´£¬×¢Ò⣬ ; ´ËʱµÃµ½µÄÊÇNµÄ¸÷¸öλµÄÄæÐòÐòÁС£È»ºó£¬½«Õâ¸öÄæÐòÐòÁÐÔÙ×éºÏ³ÉÒ»¸öеÄÕûÊýM£¬ ; ÈôM=N£¬ÔòNÊÇ»ØÎÄÊý¡£ ; Ëã·¨ÃèÊö ; 1. ecx=10 to 1000 do ; 1.1 eax=ecx±»³ýÊý;ebx=10³ýÊý;esi=0ÐÂÉú³ÉµÄÊýµÄ³õÖµ¡£ ; 1.2 while eax<>0 do ; 1.2.1 edx=0;div ebx;esi=esi*10+edx ; 1.3 if ecx=esi then print esi include io32.inc .code main proc mov ecx,10 mov ebx,ecx ;ebx=10³ýÊý .repeat xor esi,esi ;esi=0,ÊÇÐÂÉú³ÉµÄÊýµÄ³õÖµ mov eax,ecx ;eax±»³ýÊý .while (eax!=0) xor edx,edx ;edx±»³ýÊýµÄ¸ß32λ div ebx imul esi,10 add esi,edx ;ÄæÐòÉú³ÉÐÂÊý,esi=esi*10+edx .endw cmp esi,ecx jne next mov eax,ecx call dispuid call dispcrlf next: inc ecx .until (ecx>10000) ret ;return to Windows 29

main endp ;end of main end main ;end of assembly 10. ±à³Ìдһ¸öÃûΪPrimeµÄ×Ó³ÌÐò£¬ÓÃÓÚ²âÊÔÒ»¸öÕûÊýÊÇ·ñÊÇËØÊý£¬Ö÷×Ó³ÌÐò¼äµÄ²ÎÊý´«µÝͨ¹ý¶ÑÕ»Íê³É¡£µ÷ÓÃPrime×Ó³ÌÐòÇó³ö2¡«100Ö®¼äµÄËùÓÐËØÊý£¬²¢½«ËüÃÇ´æÈëParrayÊý×éÖУ¬ËØÊýµÄ¸öÊý´æÈë±äÁ¿PcounterÖС£ ; Win32 Console Application ; ÀûÓÃ×Ó³ÌÐòÇó2~100Ö®¼äµÄËùÓÐËØÊý¡£ ; Ä¿µÄ:ѧϰ×Ó³ÌÐòµÄ¹¹ÔìÓë²ÎÊýµÄ´«µÝ·½·¨¡£ include io32.inc .data Prime dword 100 dup(?) Pcounter dword ? flag byte ? .code main proc xor esi,esi ;esiËØÊý¸öÊý¼ÆÊýÆ÷£¬¼æ×öPrimeϱꡣ mov ecx,2 ;Ñ­»·¿ØÖƱäÁ¿ .while (ecx<=100) push offset flag ;flagµÄµØÖ·½øÕ»£¬´«µØÖ· push ecx ;ecx½øÕ»,´«Öµ call prime cmp flag,1 jne next mov Prime[esi*4],ecx inc esi mov eax,ecx call dispuid ;Êä³ö£¬ÓÃÓÚÑéÖ¤¡£¿ÉÒÔɾµô call dispcrlf ;Êä³ö£¬ÓÃÓÚÑéÖ¤¡£¿ÉÒÔɾµô next: inc ecx .endw mov Pcounter,esi ret ;return to Windows main endp ;end of main prime proc ; function: ÅжÏÒ»¸öÎÞ·ûºÅÕûÊýxÊÇ·ñÊÇËØÊý ; Receives: ´ÓÕ»»ñÈ¡ÎÞ·ûºÅÕûÊýx¼°±êÖ¾±äÁ¿flagµÄµØÖ· ; Returns: if x is prime number then flag=1 else flag=0 ; ×¢Ò⣺[ebp+8]ÊÇ×îºóÒ»¸öѹÈëÕ»ÖеIJÎÊý! ; ÒÔ[ebp+8]Ϊ»ù×¼£¬´ÓÕ»ÖлñÈ¡ÆäËüµÄ²ÎÊý¡£ ; Ëã·¨ÃèÊö£º ; 1.flag=1; 30

ÁªÏµºÏͬ·¶ÎÄ¿Í·þ£ºxxxxx#qq.com(#Ì滻Ϊ@)