if (ch1> =¡¯a¡¯ && ch1< =¡¯z¡¯) caps= =0; if (ch1> =¡¯A¡¯ && ch1< =¡¯Z¡¯) caps=1; ´ð: £» .code ;´úÂë¶Î cmp ch1 , a jb outjudge cmp ch1 , z ja done mov caps , 0 ; if (ch1> =¡¯a¡¯ && ch1< =¡¯z¡¯) outjudge: cmp ch1 , A jb done cmp ch1 , Z ja done mov caps , 1 ; if (ch1> =¡¯A¡¯ && ch1< =¡¯Z¡¯) done: ; ½áÊø 4. ½«ÏÂÃæCÓïÑÔ³ÌÐòµÄ´úÂëÆ¬¶Îת»»Îª¹¦Äܵȼ۵Ļã±àÓïÑÔ´úÂëÆ¬¶Î£¬ÆäÖÐsumÓëi±äÁ¿¾ùΪ˫×Ö±äÁ¿¡£ sum=0; for ( i=1;i< =100;i++) if ( i%2= =0) sum=sum+i; ´ð: £» .code ;´úÂë¶Î mov eax , 0 ; ³õʼ»¯eax=0 xor ecx , ecx ;ÓÃ×÷¼ÆÊýÆ÷ mov ecx ,100 xor ebx , ebx ;Ï൱ÓÚ i µÄ×÷Óà mov ebx , 1 ;³õʼ»¯eax=1 loop: push eax ;±£´æeaxµÄÖµ mov eax , ebx xor edx , edx ; ÓÃÀ´ÅжÏÓàÊý div 2 ;eax ³ýÒÔ2 cmp edx , 0 ;edx=eax mod 2 jz next ;ÊÇżÊýÔòÌø×ªÐ޸IJÎÊý pop eax ;»Ö¸´eaxµÄÖµ jmp next_i next: pop eax ;»Ö¸´eaxµÄÖµ add eax , ebx ;eax=eax+ebx next_i: inc ebx jmp loop ;µ±ecx<>0ʱ¼ÌÐøÑ»· done: mov sum eax ; ½áÊø 5. ÔÚN·ÖÖ§½á¹¹ÖУ¬ÖÁÉÙҪʹÓÃN¡ª1Ìõ JMPÖ¸ÁËüµÄ×÷ÓÃÊÇʲô£¿ ´ð£ºµÈͬÓÚswitchÓï¾äÖеÄbreakÓÃÀ´Ìøµ½·ÖÖ§³ö¿Ú¡£ 6. ²»Ê¹ÓÃCALLÖ¸ÁîÊÇ·ñ¿ÉÒÔʵÏÖ×Ó³ÌÐòµÄµ÷Óã¿Èô¿ÉÒÔ£¬¾ÙÀý˵Ã÷¡£ ´ð£º¿ÉÒÔʵÏÖ£¬Í¨¹ýÕ»À´ÊµÏÖ¡£½«×Ó³ÌÐòÈë¿ÚµØÖ·Ñ¹Õ»Í¨¹ýEBP+4À´ÐÞ¸ÄPCÖµÀ´·µ»ØÔ³ÌÐò£¬Ò²¾ÍʵÏÖ×Ó³ÌÐòµÄµ÷Óᣠ7. д³ö3ÌõÒÔÉϵĿÉÒԸıä³ÌÐòÖ´ÐÐÁ÷³ÌµÄÖ¸Á²¢¼òÊöÆäÓÃ;¡£ ´ð£º JMP ÎÞÌõ¼þÌø×ª 19
CALL µ÷ÓÃ×Ó³ÌÐò RET ·µ»Øµ½µ÷Óú¯Êý»ò²Ù×÷ϵͳ INT ÖжÏÖ¸Áî 8. ÔÚ×Ó³ÌÐòÖУ¬¿É·ñ¸Ä±ä×Ó³ÌÐòµÄ·µ»ØµØÖ·£¿Èô¿ÉÒÔ£¬Ôò¾ÙÀý˵Ã÷¡£ ´ð£º¿ÉÒԸı䣬ͨ¹ýÐÞ¸ÄÕ»ÖÐµÄ EBP+4µÄÄÚÈÝ¡£ 9. ÎªÊ²Ã´ÌØ±ðÇ¿µ÷Ϊ×Ó³ÌÐò¼ÓÉϱØÒªµÄ×¢ÊÍ£¿ ´ð£ºÍêÕûµÄ×Ó³ÌÐò×¢ÊͿɷ½±ã³ÌÐòÔ±µ÷ÓøÃ×Ó³ÌÐò£¬×Ó³ÌÐò×¢ÊͰüÀ¨×Ó³ÌÐòÃû¡¢×Ó³ÌÐò¹¦ÄÜ¡¢Èë¿Ú²ÎÊýºÍ³ö¿Ú²ÎÊý¡¢µ÷ÓÃ×¢ÒâÊÂÏîºÍÆäËû˵Ã÷µÈ¡£ 5.6.Ó¦ÓÃÌâ 1. Äܱ»4Õû³ýµ«²»Äܱ»100Õû³ý£¬»òÕßÄê±»400Õû³ýµÄÄê·ÝÊÇÈòÄê¡£±à³Ìдһ¸öÍêÕûµÄ³ÌÐò,Çó³ö2012Äê¡«2099ÄêÖеÄËùÓÐÈòÄêÄê·Ý£¬²¢°ÑËüÃÇ´æ·ÅÔÚÊý×éLyearÖС£ ; Win32 Console Application ;Äܱ»4Õû³ýµ«²»Äܱ»100Õû³ý£¬»òÕßÄê±»400Õû³ýµÄÄê·ÝÊÇÈòÄê¡£ ;±à³Ìдһ¸öÍêÕûµÄ³ÌÐò,Çó³ö2012Äê¡«2099ÄêÖеÄËùÓÐÈòÄêÄê·Ý£¬ ;²¢°ÑËüÃÇ´æ·ÅÔÚÊý×éLyearÖС£ ; Ä¿µÄ:ѧϰÈçºÎÀûÓÃÌõ¼þ×ªÒÆÖ¸Áî¹¹Ô츴ÔÓÂß¼ÔËËã½á¹¹¡£ ; Ëã·¨ÃèÊö ; esi=0ÈòÄê¸öÊý¼ÆÊýÆ÷;ecx=2012Äê·Ý¼ÆÊýÆ÷; ; while (ecx<2100) ; { if (year mod 4=0 and year mod 100 <>0) or (year mod 400=0) then ; {Lyear[esi]=ecx;esi++;} ; ecx++; ; } ; Lcounter=esi; ; ²ÉÓÃdivÖ¸ÁîÇóÓàÊýÀ´ÅжÏÕû³ýÐÔ,²ÉÓôø±ÈÀýÒò×ÓµÄÏà¶ÔѰַ´¦ÀíÊý×é¡£ include io32.inc .data Lyear dword 100 dup(?) Lcounter dword 0 .code main proc xor esi,esi ;esiÈòÄê¸öÊý¼ÆÊýÆ÷£¬¼æ×öLyearϱꡣ mov ecx,2012 ;ecxÄê·Ý¼ÆÊýÆ÷¡£ .while (ecx<2100) mov eax,ecx xor edx,edx mov ebx,400 div ebx cmp edx,0 jz leap ;if year mod 400=0 then goto leap 20
mov eax,ecx xor edx,edx mov ebx,4 div ebx cmp edx,0 jnz next ;if year mod 4<>0 then goto next mov eax,ecx xor edx,edx mov ebx,100 div ebx cmp edx,0 jz next ;if year mod 100=0 then goto next leap: mov Lyear[esi*4],ecx inc esi mov eax,ecx call dispuid ;Êä³ö£¬ÓÃÓÚÑéÖ¤¡£¿ÉÒÔɾµô call dispcrlf ;Êä³ö£¬ÓÃÓÚÑéÖ¤¡£¿ÉÒÔɾµô next: inc ecx .endw mov Lcounter,esi mov eax,esi call dispuid ;Êä³ö£¬ÓÃÓÚÑéÖ¤¡£¿ÉÒÔɾµô call dispcrlf ;Êä³ö£¬ÓÃÓÚÑéÖ¤¡£¿ÉÒÔɾµô ret main endp ;end of main end main ;end of assembly 2. ±à³Ìдһ¸öÍêÕûµÄ³ÌÐò,Çó³ö2¡«100Ö®¼äµÄËùÓÐËØÊý£¬²¢½«ËüÃÇ´æÈëPrimeÊý×éÖУ¬ËØÊýµÄ¸öÊý´æÈë±äÁ¿PcounterÖС£ ; Win32 Console Application ; ±à³Ìдһ¸öÍêÕûµÄ³ÌÐò,Çó³ö2¡«100Ö®¼äµÄËùÓÐËØÊý£¬ ;²¢½«ËüÃÇ´æÈëPrimeÊý×éÖУ¬ËØÊýµÄ¸öÊý´æÈë±äÁ¿PcounterÖС£ ; Ä¿µÄ:ѧϰÈçºÎÀûÓÃÌõ¼þ×ªÒÆÖ¸Áî¹¹ÔìÌõ¼þÑ»·½á¹¹,¶àÖØÑ»·µÄ¹¹Ôì·½·¨¡£ ; Ëã·¨ÃèÊö ; 0. Pcounter=0; ; 1. i=2 to 100 do ; 1.1 if i is prime number then Prime[Pcounter++]=i ; ϸ»¯ 1.1 ÈçÏ£º ; 1.1 j=2 to i/2 do ; 1.1.1 if i mod j=0 then goto next i ; 1.1.2 Prime[Pcounter++]=i 21
; ºÏÀí·ÖÅä¼Ä´æÆ÷£¬esi=0£¬esiËØÊý¸öÊý¼ÆÊýÆ÷£¬¼æ×öPrimeϱꣻ ; ²ÉÓôø±ÈÀýÒò×ÓµÄÏà¶ÔѰַ´¦ÀíÊý×é¡£ ; i=ebx,j=ecx,edxeax×ö±»³ýÊý,ecx×ö³ýÊý¡£ include io32.inc .data Prime dword 100 dup(?) Pcounter dword ? .code main proc xor mov iLoop: jLoop: cmp ja mov shr esi,esi ;esiËØÊý¸öÊý¼ÆÊýÆ÷£¬¼æ×öPrimeϱꡣ ebx,2 ebx,100 ;iÑ»·Èë¿Ú done ecx,ebx ecx,1 ;j=i/2 ecx,2 ;jÑ»·Èë¿Ú prime eax,ebx ;xor edx,edx cmp jb mov cdq div ecx ;±»³ýÊýËÍedxeax,32λ³ý·¨ or edx,edx ;cmp edx,0 jz nexti ;if i mod j=0 then goto next i dec ecx jmp jLoop prime: mov Prime[esi*4],ebx inc esi mov eax,ebx call dispuid ;Êä³ö£¬ÓÃÓÚÑéÖ¤¡£¿ÉÒÔɾµô call dispcrlf ;Êä³ö£¬ÓÃÓÚÑéÖ¤¡£¿ÉÒÔɾµô nexti: inc ebx ;i=i+1 jmp iLoop done: mov Pcounter,esi ret ;·µ»Ø²Ù×÷ϵͳ main endp ;end of main end main ;end of assembly 3. ±à³Ìдһ¸öÍêÕûµÄ³ÌÐò,½«Êý×éarayÖеÄÔªËØ°´ÄæÐò´æ·Å£¬ÒªÇó³ÌÐòÖи½¼ÓµÄ±äÁ¿×îÉÙ¡£Êý¾Ý¶ÎµÄ¶¨ÒåÈçÏ£º .data aray dword 12,4, 168,122,£33,56,78,99,345, 66,£5 ; ÄæÖÃÒ»¸öһάÊý×é ; Ëã·¨ÃèÊö£º 22

