΢»úÔÀíʵÑ鱨¸æÃ°ÅÝÅÅÐò
Ò»¡¢ÊµÑéÄ¿µÄ
(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