΢»úÔ­ÀíÓë½Ó¿Ú¼¼Êõ£¨Ç®Ïþ½Ý°æ£©¿ÎºóϰÌâ´ð°¸ ÏÂÔØ±¾ÎÄ

; ´úÂë¶Î£¬×Ó³ÌÐò dispbd proc ; 32λ¶þ½øÖÆÊýµÄÊä³ö push ecx push edx mov ecx,32 ; ÒªÊä³öµÄ×Ö·û¸öÊý dbd: rol eax,1; ALÑ­»·×óÒÆÒ»Î» push eax and al,01h ; È¡AL×îµÍλ add al,30h ; ת»¯³ÉÏàÓ¦µÄASCLLÂëÖµ call dispc ; ÒÔ¶þ½øÖƵÄÐÎʽÏÔʾ pop eax loop dbd pop edx pop ecx ret

dispbd endp ¡²Ï°Ìâ4.23¡³

½«ÀýÌâ4-16µÄ32λ¼Ä´æÆ÷¸ÄÓÃ16λ¼Ä´æÆ÷£¬½öʵÏÖÊä³ö£­215¡«£«215£­1Ö®¼äµÄÊý¾Ý¡£ ¡²½â´ð¡³ ; Êý¾Ý¶Î

array word 12345,-1234,32767,-32768,0,667 writebuf byte 6 dup(0) ; ´úÂë¶Î£¬Ö÷³ÌÐò mov ecx,lengthof array mov ebx,0 again:

mov ax,array[ebx*2] call write call dispcrlf

inc ebx ;´Ëʱebx´ú±íarrayÖеĵڼ¸¸öÊý dec ecx ;´Ëʱecx´ú±íÑ­»·µÄ´ÎÊý jnz again ; ´úÂë¶Î£¬×Ó³ÌÐò

write proc ;×Ó³ÌÐò¿ªÊ¼ push ebx push ecx push edx

mov ebx,offset writebuf ;ebxÖ¸ÏòÏÔʾ»º³åÇø test ax,ax jnz write1

mov byte ptr [ebx],30h inc ebx jmp write5

write1: ;Èô²»Îª0ÔòÊ×ÏÈÅжÏÊÇÕýÊǸº jns write2 ;ÈôΪÕýÔòÌø¹ýÏÂÃæÁ½²½µ½write2 mov byte ptr [ebx],'-' inc ebx

neg ax write2:

mov cx,10

push cx ;½«cx=10ѹÈëÕ»£¬×÷ΪÍ˳ö±êÖ¾

write3: ;write3ÊÇÈÃeaxÑ­»·³ýÒÔ10²¢°ÑÓàÊýµÄASCIIÂëѹÈëÕ» cmp ax,0 jz write4 xor dx,dx div cx add dx,30h push dx jmp write3

write4: ;ÓàÊýµÄASCIIÂë³öÕ»£¬Óöµ½10ÖÕÖ¹²¢×ªµ½write5ÏÔʾ½á¹û pop dx cmp dx,cx jz write5

mov byte ptr [ebx],dl inc ebx jmp write4

write5: ;ÏÔʾ½á¹û mov byte ptr [ebx],0 mov eax,offset writebuf call dispmsg pop edx pop ecx pop ebx ret write endp ¡²Ï°Ìâ4.24¡³

²Î¿¼ÀýÌâ4-17£¬±àдʵÏÖ32λÎÞ·ûºÅÕûÊýÊäÈëµÄ×Ó³ÌÐò£¬²¢Éè¼ÆÒ»¸öÖ÷³ÌÐòÑéÖ¤¡£ ¡²½â´ð¡³ ; Êý¾Ý¶Î count =10

array dword count dup(0) temp dword ?

readbuf byte 30 dup(0)

errmsg byte 'Input error,enter again!',13,10,0

msg1 byte 'Input ten unsigned numbers,each number ends with enter key:',13,10,0 msg2 byte 'Check the numbers your inputted:',13,10,0 ; ´úÂë¶Î£¬Ö÷³ÌÐò

mov eax,offset msg1 call dispmsg mov ecx,count

mov ebx,offset array again:

call read

mov eax,temp mov [ebx],eax

add ebx,4 dec ecx jnz again

mov eax,offset msg2 call dispmsg

mov edx,offset array mov ecx,count next:

mov eax,[edx] call dispuid call dispcrlf add edx,4 dec ecx jnz next ; ´úÂë¶Î£¬×Ó³ÌÐò read proc

push eax push ecx push ebx push edx read0:

mov eax,offset readbuf call readmsg test eax,eax jz readerr cmp eax,12 ja readerr

mov edx,offset readbuf xor ebx,ebx xor ecx,ecx mov al,[edx] cmp al,'+' jz read1 cmp al,'-' jnz read2 jmp readerr read1:

inc edx

mov al,[edx] test al,al

jz read3 ;Èç¹ûΪ0£¬Ôò˵Ã÷¸Ã×Ö·û´®ÒѽáÊø read2:

cmp al,'0' jb readerr cmp al,'9' ja readerr sub al,30h

imul ebx,10 ;ebxÓÃÀ´´æ´¢´¦Àí¹ýµÄÊý¾Ý jc readerr movzx eax,al add ebx,eax jnc read1 readerr:

mov eax,offset errmsg call dispmsg jmp read0 read3:

mov temp,ebx pop edx pop ebx pop ecx pop eax ret read endp ¡²Ï°Ìâ4.25¡³

±àдһ¸ö¼ÆËã×Ö½ÚУÑéºÍµÄ×Ó³ÌÐò¡£Ëùν¡°Ð£ÑéºÍ¡±ÊÇÖ¸²»¼Ç½øÎ»µÄÀÛ¼Ó£¬³£ÓÃÓÚ¼ì²éÐÅÏ¢µÄÕýÈ·ÐÔ¡£Ö÷³ÌÐòÌṩÈë¿Ú²ÎÊý£¬ÓÐÊý¾Ý¸öÊýºÍÊý¾Ý»º³åÇøµÄÊ×µØÖ·¡£×Ó³ÌÐò»ØËÍÇóºÍ½á¹ûÕâ¸ö³ö¿Ú²ÎÊý¡£ ¡²½â´ð¡³ ; ¼ÆËã×Ö½ÚУÑéºÍµÄͨÓùý³Ì ; Èë¿Ú²ÎÊý£ºDS:EBX£½Êý×éµÄ¶ÎµØÖ·:Æ«ÒÆµØÖ·£¬ECX=ÔªËØ¸öÊý ; ³ö¿Ú²ÎÊý£ºAL£½Ð£ÑéºÍ ; ˵Ã÷£º³ýEAX/EBX/ECXÍ⣬²»Ó°ÏìÆäËû¼Ä´æÆ÷ checksum proc xor al,al ; ÀÛ¼ÓÆ÷Çå0 sum: add al,[ebx] ; ÇóºÍ inc ebx ; Ö¸ÏòÏÂÒ»¸ö×Ö½Ú loop sum ret

checksum endp ¡²Ï°Ìâ4.26¡³

±àÖÆ3¸ö×Ó³ÌÐò°ÑÒ»¸ö32λ¶þ½øÖÆÊýÓÃ8λʮÁù½øÖÆÐÎʽÔÚÆÁÄ»ÉÏÏÔʾ³öÀ´£¬·Ö±ðÔËÓÃÈçÏÂ3ÖÖ²ÎÊý´«µÝ·½·¨£¬²¢ÅäºÏ3¸öÖ÷³ÌÐòÑéÖ¤Ëü¡£ £¨1£©²ÉÓÃEAX¼Ä´æÆ÷´«µÝÕâ¸ö32λ¶þ½øÖÆÊý £¨2£©²ÉÓÃtemp±äÁ¿´«µÝÕâ¸ö32λ¶þ½øÖÆÊý £¨3£©²ÉÓöÑÕ»·½·¨´«µÝÕâ¸ö32λ¶þ½øÖÆÊý ¡²½â´ð¡³ £¨1£© ; Êý¾Ý¶Î

wvar word 307281AFH ; ´úÂë¶Î£¬Ö÷³ÌÐò mov eax,wvar call disp mov al,'H' call dispc ; ´úÂë¶Î£¬×Ó³ÌÐò