΢»úÔ­ÀíʵÑ鱨¸æÃ°ÅÝÅÅÐò ÏÂÔØ±¾ÎÄ

΢»úÔ­ÀíʵÑ鱨¸æÃ°ÅÝÅÅÐò

Ò»¡¢ÊµÑéÄ¿µÄ

(1)ѧϰ»ã±àÓïÑÔÑ­»·½á¹¹Óï¾äµÄÌØµã,ÖØµãÕÆÎÕðÅÝÅÅÐòµÄ·½·¨¡£ (2)Àí½â²¢ÕÆÎÕ¸÷ÖÖÖ¸ÁîµÄ¹¦ÄÜ,±àдÍêÕûµÄ»ã±àÔ´³ÌÐò¡£

(3)½øÒ»²½ÊìϤDEBUGµÄµ÷ÊÔÃüÁî,ÔËÓÃDEBUG½øÐе÷ÊÔ»ã±àÓïÑÔ³ÌÐò¡£

¶þ¡¢ÊµÑéÄÚÈݼ°ÒªÇó

(1)ʵÑéÄÚÈÝ:´Ó¼üÅÌÊäÈëÎå¸öÓзûºÅÊý,ÓÃðÅÝÅÅÐò·¨½«Æä°´´ÓСµ½´óµÄ˳ÐòÅÅÐò¡£ (2)ʵÑéÒªÇó:

¢Ù±àÖÆ³ÌÐò,¶ÔÕâ×éÊý½øÐÐÅÅÐò²¢Êä³öÔ­Êý¾Ý¼°ÅÅÐòºóµÄÊý¾Ý;

¢ÚÀûÓÃDEBUGµ÷ÊÔ¹¤¾ß,ÓÃD0ÃüÁî,²éÇÆÅÅÐòǰºóÄÚ´æÊý¾ÝµÄ±ä»¯;

¢ÛÈ¥µô×î´óÖµÓë×îСֵ,Çó³öÆäÓàÖµµÄƽ¾ùÖµ,Êä³ö×î´óÖµ¡¢×îСֵÓëÆ½¾ùÖµ; ¢ÜÓÃѹջPUSHÓë³öÕ»POPÖ¸Áî,½«Æ½¾ùÖµ°´Î»Öð¸öÊä³ö; ¢Ý½«Æ½¾ùֵת»¯Îª¶þ½øÖÆ´®,²¢½«Õâ×é¶þ½øÖÆ´®Êä³ö;

¢ÞËùÓÐÊý¾ÝÊä³öǰҪÓÃ×Ö·û´®µÄÊä³öÖ¸Áî½øÐÐÊä³öÌáʾ,ËùÓÐÊý¾Ý½á¹ûÄÜÇåÎúÏÔʾ¡£

Èý¡¢³ÌÐòÁ÷³Ìͼ

¿ªÊ¼ (1)Ö÷³ÌÐò:MAIN

³õʼ»¯

¼üÅÌÊäÈëÊý¾Ý

ÏÔʾÊäÈë´íÎó µ÷ÓÃINPUT×Ó³ÌÐò

·ñ ÊäÈë¾ÍÊÇ·ñÕý

È·

¾ÍÊÇ

ÏÔʾԭʼÊý¾Ý

µ÷ÓÃOUTPUT×Ó³ÌÐò

ÏÔʾðÅÝÅÅÐòºóµÄÊý¾Ý

µ÷ÓÃSORT×Ó³ÌÐò

µ÷ÓÃOUTPUT×Ó³ÌÐò ÏÔʾ×îСֵMin

΢»úÔ­ÀíʵÑ鱨¸æÃ°ÅÝÅÅÐò

ÏÔʾOne×Ó³ÌÐò

ÏÔʾ×î´óÖµMax

µ÷ÓÃOne×Ó³ÌÐò

ÏÔʾÆäÓàÊýƽ¾ùÖµAverage

µ÷ÓÃOne×Ó³ÌÐò ÏÔʾƽ¾ùÖµ¶þ½øÖÆ´®Binary

µ÷ÓÃOne×Ó³ÌÐò

½áÊø (2)ðÅÝÅÅÐò×Ó³ÌÐò: SORT

COUNT1 ---- ÍâÑ­»·´ÎÊý ½øÈë

COUNT2 ---- ÄÚÑ­»·´ÎÊý

i ---- Êý×éÏÂ±ê ³õʼ»¯

COUNT1=N-1

COUNT2=COUNT1

SI=0

·ñ Ai¡ÝAi+1

¾ÍÊÇ

AiÓëAi+1Á½Êý½»»»

SI=SI+2 COUNT2=COUNT2-1

·ñ COUNT2=0£¿

΢»úÔ­ÀíʵÑ鱨¸æÃ°ÅÝÅÅÐò

¾ÍÊÇ

COUNT1=COUNT1-1

·ñ COUNT2=0£¿

¾ÍÊÇ

·µ»Ø ËÄ¡¢³ÌÐòÇåµ¥ NAME BUBBLE_SORT DATA SEGMENT

ARRAY DW 5 DUP(?) ;ÊäÈëÊý¾ÝµÄ´æ´¢µ¥Ôª COUNT DW 5 TWO DW 2

FLAG1 DW 0 ;ÅжϷûºÅ±êÖ¾

FLAG2 DB 0 ;ÅжÏÊ×λ¾ÍÊÇ·ñΪÁãµÄ±êÖ¾ FAULT DW -1 ;Åжϳö´í±êÖ¾ CR DB 0DH,0AH,'$'

STR1 DB 'Please input five numbers seperated with space and finished with Enter:','$' STR2 DB 'The original numbers:','$' STR3 DB 'The sorted numbers:','$' STR4 DB 'The Min:','$' STR5 DB 'The Max:','$' STR6 DB 'The Average:','$'

STR7 DB 'The binary system of the average :','$' STR8 DB 'Input error!Please input again!''$' DATA ENDS

CODE SEGMENT MAIN PROC FAR

ASSUME CS:CODE,DS:DATA,ES:DATA START: PUSH DS AND AX,0 PUSH AX

MOV AX,DATA MOV DS,AX LEA DX,STR1

MOV AH,09H ;9ºÅDOS¹¦Äܵ÷ÓÃ,ÌáʾÊäÈëÊý¾Ý INT 21H

CALL CRLF ;»Ø³µ»»ÐÐ

REIN: CALL INPUT ;µ÷ÓÃINPUT×Ó³ÌÐò,ÊäÈëԭʼÊý¾Ý CMP AX,FAULT ;ÅжϾÍÊÇ·ñ³ö´í, JE REIN ;³ö´íÔòÖØÐÂÊäÈë

΢»úÔ­ÀíʵÑ鱨¸æÃ°ÅÝÅÅÐò

LEA DX,STR2

MOV AH,09H ;9ºÅDOS¹¦Äܵ÷ÓÃ,ÌáʾÊä³öԭʼÊý¾Ý INT 21H

CALL OUTPUT ;µ÷ÓÃOUTPUT×Ó³ÌÐò,Êä³öԭʼÊý¾Ý CALL SORT ;µ÷ÓÃSORT×Ó³ÌÐò,½øÐÐðÅÝÅÅÐò LEA DX,STR3

MOV AH,09H ;9ºÅDOS¹¦Äܵ÷ÓÃ,ÌáʾÊä³öÅÅÐòºóµÄÊý¾Ý INT 21H

CALL OUTPUT ;µ÷ÓÃOUTPUT×Ó³ÌÐò,Êä³öÅÅÐòºóµÄÊý¾Ý AND SI,0 AND BX,0

MOV BX,ARRAY[SI] LEA DX,STR4

MOV AH,09H INT 21H

CALL ONE CALL CRLF LEA DX,STR5

MOV AH,09H INT 21H

MOV BX,ARRAY[SI+8] CALL ONE CALL CRLF LEA DX,STR6

MOV AH,09H INT 21H AND DX,0

MOV AX,ARRAY[SI+2] ADD AX,ARRAY[SI+4] ADC AX,ARRAY[SI+6] MOV CX,COUNT DEC CX DEC CX

DIV CX MOV BX,AX CALL ONE CALL CRLF LEA DX,STR6

MOV AH,09H MOV CX,16 LL1: AND DX,0 DIV TWO PUSH DX LOOP LL1

;½«×îСֵ´æÈëBX ;9ºÅDOS¹¦Äܵ÷ÓÃ,ÌáʾÊä³öÊý¾ÝµÄ×îСֵ ;µ÷ÓÃONE×Ó³ÌÐò,Êä³ö×îСֵ ;9ºÅDOS¹¦Äܵ÷ÓÃ,ÌáʾÊä³öÅÅÐòºóµÄ×î´óÖµ ;½«×î´óÖµ´æÈëBX

;µ÷ÓÃONE×Ó³ÌÐò,Êä³ö×î´óÖµ ;9ºÅDOS¹¦Äܵ÷ÓÃ,ÌáʾÊä³öƽ¾ùÖµ ;½«È¥µô×î´ó×îСֵµÄÆäÓà¸÷ÊýÖ®Óë´æÈëAX ;¼ÆÊýÆ÷CX=5 ;CX¡ûCX-1 ;×Ö³ý·¨,ÓàÊý´æÈëAX

;½«Óàϸ÷ÊýµÄƽ¾ùÖµ´æÈëBX

;µ÷ÓÃONE×Ó³ÌÐò,Êä³öÈ¥µô×î´ó×îСֵµÄÆäÓàÊýƽ¾ùÖµ ;9ºÅDOS¹¦Äܵ÷ÓÃ,ÌáʾÊä³öƽ¾ùÖµµÄ¶þ½øÖÆ´® ;16λ¶þ½øÖÆ´®,¼ÆÊýÆ÷³õʼֵΪ16