问答题 请优化排序过程SORT。
【正确答案】如下过程SORT实现了“冒泡”法排序。
   ;过程名称:SORT
   ;功能:将缓冲区中的双字有符号数按从小到大排序
   ;入口参数:ESI=缓冲区首地址偏移,ECX=缓冲区中待排序数据的个数(≥2)
   ;出口参数:缓冲区中已排好的数据
   SORT       PROC
              DEC    ECX
   OUTLOOP:   MOV    EDX,00
   INNERLOOP: CMP    EDX,ECX
              JAE    SHORT BOTTOM
              MOV    EAX,[ESI+EDX×4+4]
              CMP    [ESI+EDI×4],EAX
              JGE    SHORT NOSWAP
              XCHG   [ESI+EDX×4],EAX
              MOV    [ESI+EDX×4+4],EAX
   NOSWAP:    INC    EDX
              JMP    INNERLOOP
   BOTTOM:    LOOP   OUTLOOP
              RET
   SORT    ENDP
【答案解析】本题是对一组双字进行排序,原程序是采用双重循环,当有N个数时,就需要比较(N-1)!次。现没置一个标志位,表示相邻两数据进行交换的状态,当一次循环比较结束,没有发生相互交换,表明数组已经是有序的,就不必再继续比较下去了,这样可提高效率。
   优化后的源程序如下:
   SORT   PROC
   DEC    ECX
   OUTLOOP:     MOV  EDX,00
   INNERLOOP:   CMP  EDX,ECX
                JAE  SHORT BOTTOM
                MOV  BL,00
                MOV  EAX,[ESI+EDX×4+4]
                CMP  [ESI+EDI×4],EAX
                JGE  SHORT NOSWAP
                XCHG [ESI+EI)X×4],EAX
                MOV  [ESI+EDX×4+4],EAX
                MOV  BL,01
   NOSWAP:      INC  EDX
                CMP  BL,00   ;设置一个交换标志位
                JZ   OVER
                JMP  INNERLOOP
   BOTTOM:      LOOP  OUTLOOP
   OVER:        RET
                SORT  FNDP