΢»úÔ­ÀíÓë½Ó¿Ú¼¼Êõ+µÚËİæ+Ç®Ïþ½ÝÖ÷±à+¿ÎºóϰÌâ´ð°¸ ÏÂÔØ±¾ÎÄ

L3:

mov al,'N' call dispc

¡²Ï°Ìâ4.16¡³Ö÷´æÖÐÓÐÒ»¸ö8λѹËõBCDÂëÊý¾Ý£¬±£´æÔÚÒ»¸öË«×Ö±äÁ¿ÖС£ÏÖÔÚÐèÒª½øÐÐÏÔʾ£¬µ«ÒªÇó²»ÏÔʾǰµ¼0¡£ÓÉÓÚλÊý½Ï¶à£¬ÐèÒªÀûÓÃÑ­»·ÊµÏÖ£¬µ«ÈçºÎ´¦Àíǰµ¼0ºÍÊý¾ÝÖмäµÄ0ÄØ£¿²»·ÁÉèÖÃÒ»¸ö±ê¼Ç¡£±à³ÌʵÏÖ¡£ ¡²½â´ð¡³ bcd goon: again: disp: next: done:

¡²Ï°Ìâ4.17¡³ÒÑÖªÒ»¸ö×Ö·û´®µÄ³¤¶È£¬ÌÞ³ýÆäÖÐËùÓеĿոñ×Ö·û¡£Çë´Ó×Ö·û´®×îºóÒ»¸ö×Ö·û¿ªÊ¼Öð¸öÏòǰÅжϡ¢²¢½øÐд¦Àí¡£ ¡²½â´ð¡³ string

; Êý¾Ý¶Î

byte 'Let us have a try !',0dh,0ah,0 ; ´úÂë¶Î

mov ecx,sizeof string ; Êý¾Ý¶Î dword 00371002h ; ´úÂë¶Î mov esi,bcd cmp esi,0 jnz goon mov al,'0' call dispc jmp done mov ecx,8 xor ebx,ebx rol esi,4 mov eax,esi and eax,0fh cmp ebx,0 jnz disp cmp eax,0 jz next mov ebx,1 add al,30h call dispc loop again

; EAX£½0£¬ËµÃ÷ÊÇǰµ¼0£¬²»ÏÔʾ ; EAX¡Ù0£¬Ã»ÓÐǰµ¼0ÁË£¬ÁîEBX£½1¡Ù0 ; EAXµÍ4λ±£´æµ±Ç°ÒªÏÔʾµÄBCDÂë ; EBX¡Ù0£¬ËµÃ÷²»ÊÇǰµ¼0£¬ÒªÏÔʾ ; EBX£½0£¬ËµÃ÷¿ÉÄÜÊÇǰµ¼0 ; EBX£½0£¬±íʾ¿ÉÄÜÊÇǰµ¼0

£­ £­29

outlp: inlp: next: done:

cmp ecx,2 jb done lea eax,string call dispmsg mov esi,ecx dec esi

cmp string[esi],' ' jnz next mov edi,esi dec ecx inc edi

mov al,string[edi] mov string[edi-1],al cmp edi,ecx jb inlp dec esi cmp esi,0 jnz outlp lea eax,string call dispmsg

; Ϊ0½áÊø

; ÏÔʾ´¦ÀíºóµÄ×Ö·û´® ; ¼ÌÐø½øÐÐ ; Ç°ÒÆÒ»¸öλÖà ; ¼ì²âÊÇ·ñÊǿոñ ; ²»Êǿոñ¼ÌÐøÑ­»·

; Êǿոñ£¬½øÈëÌÞ³ý¿Õ¸ñ·ÖÖ§ ; ÏÔʾ´¦ÀíǰµÄ×Ö·û´®

¡²Ï°Ìâ4.18¡³µÚ3ÕÂϰÌâ3.14ÔÚÆÁÄ»ÉÏÏÔʾASCII±í£¬ÏÖ½öÔÚÊý¾Ý¶ÎÉèÖñí¸ñ»º³åÇø£¬±à³Ì½«ASCII´úÂëÖµÌîÈëÁô³öλÖõıí¸ñ£¬È»ºóµ÷ÓÃÏÔʾ¹¦ÄÜʵÏÖ£¨ÐèÒªÀûÓÃË«ÖØÑ­»·£©¡£ ¡²½â´ð¡³ table tab1 start:

mov ebx,offset tab1 mov edx,'| 02' mov ax,2020h mov esi,6 byte 0 .code

include io32.inc .data

byte ' |0 1 2 3 4 5 6 7 8 9 A B C D E F',13,10 byte '---+-------------------------------',13,10 byte 6 dup(36 dup(?),13,10)

£­ £­30

again0: again1:

mov [ebx],edx add ebx,4 mov ecx,16

mov word ptr [ebx],ax add ebx,2 inc al loop again1

add ebx,2 add edx,1 dec esi jnz again0

mov eax,offset table call dispmsg exit 0 end start

¡²Ï°Ìâ4.19¡³Çë°´ÈçÏÂ˵Ã÷±àд×Ó³ÌÐò£º

×Ó³ÌÐò¹¦ÄÜ£º°ÑÓÃASCIIÂë±íʾµÄÁ½Î»Ê®½øÖÆÊýת»»ÎªÑ¹ËõBCDÂë Èë¿Ú²ÎÊý£ºDH£½Ê®Î»ÊýµÄASCIIÂ룬DL£½¸öλÊýµÄASCIIÂë ³ö¿Ú²ÎÊý£ºAL£½¶ÔÓ¦BCDÂë

¡²½â´ð¡³ asctob asctob

¡²Ï°Ìâ4.20¡³³Ë·¨µÄ·ÇѹËõBCDÂëµ÷ÕûÖ¸ÁîAAMÖ´ÐеIJÙ×÷ÊÇ£ºAH¡ûAL¡Â10µÄÉÌ£¬AL¡ûAL¡Â10µÄÓàÊý¡£ÀûÓÃAAM¿ÉÒÔʵÏÖ½«ALÖеÄ100ÄÚÊý¾Ýת»»ÎªASCIIÂ룬³ÌÐòÈçÏ£º

xor ah,ah aam

add ax,3030h

ÀûÓÃÕâ¶Î³ÌÐò£¬±àдһ¸öÏÔʾALÖÐÊýÖµ£¨0¡«99£©µÄ×Ó³ÌÐò¡£

proc shl dh,4 mov al,dh and dl,0fh or al,dl ret endp

¡²½â´ð¡³ disp99

proc

£­ £­31

disp99

xor ah,ah aam

add ax,3030h push ax mov al,ah call dispc pop ax call dispc ret endp

¡²Ï°Ìâ4.21¡³±àдһ¸öÔ´³ÌÐò£¬ÔÚ¼üÅÌÉϰ´Ò»¸ö¼ü£¬½«Æä·µ»ØµÄASCIIÂëÖµÏÔʾ³öÀ´£¬Èç¹û°´ÏÂESC¼ü£¨¶ÔÓ¦ASCIIÂëÊÇ1BH£©Ôò³ÌÐòÍ˳ö¡£Çëµ÷ÓÃÊéÖеÄHTOASC×Ó³ÌÐò¡£ ¡²½â´ð¡³ again: done:

¡²Ï°Ìâ4.22¡³±àдһ¸ö×Ó³ÌÐò£¬ËüÒÔ¶þ½øÖÆÐÎʽÏÔʾEAXÖÐ32λÊý¾Ý£¬²¢Éè¼ÆÒ»¸öÖ÷³ÌÐòÑéÖ¤¡£ ¡²½â´ð¡³

; ´úÂë¶Î£¬Ö÷³ÌÐò mov eax,8F98FF00H call dispbd ; ´úÂë¶Î£¬×Ó³ÌÐò

; µ÷ÓÃ×Ó³ÌÐò

; ´úÂë¶Î£¬Ö÷³ÌÐò call readc cmp al,1bh jz done mov bl,al mov al,':' call dispc mov al,bl rol al,4 call htoasc call dispc mov al,bl call htoasc call dispc call dispcrlf jmp again

; µ÷ÓÃ×Ó³ÌÐò ; ÏÔʾһ¸ö×Ö·û ; µ÷ÓÃ×Ó³ÌÐò ; ÏÔʾһ¸ö×Ö·û

£­ £­32