2014-12-05 33 views
0

8086彙編語言程序對數組排序如下: 數組中的最小值應放置在第一個單元格中。 最後一個單元格中的第二小值。 陣列的第二個單元格中的第三小值。 排列在 陣列的倒數第一個單元格中的第四小值。 •上述過程一直持續到陣列完全排序。 注意的是,在上述分選技術,初始陣列 最終會在大的值被設置在所述陣列以特殊方式排序?請幫助?

這裏的中間部分是我的代碼它排序但在正常方式:

org 100h 

.MODEL SMALL 
    .DATA 
      TABLE DB  9,2,6,8,5,1 
      B  DB  6 DUP(0) 
      VAL1 DB  5 
      NL  DB  ' ','$'  

    .CODE 

      MOV AX,@DATA 
      MOV DS,AX 
      LEA BX,TABLE 
      MOV DL,VAL1 

     LBL1: 
      LEA BX,TABLE 
      MOV CL,5 

     LBL2: 
      MOV AL,[BX] 
      MOV DL,[BX+1] 
      CMP AL,DL 
      JB LBL3 
      MOV [BX],DL 
      MOV [BX+1],AL 

     LBL3: 
      INC BX 
      LOOP LBL2 
      MOV DL,VAL1 
      DEC DL 
      MOV VAL1,DL 
      CMP DL,00 
      JNE LBL1 
      MOV CL,6 
      LEA BX,TABLE 


       DISPLAY: 

      LEA DX,NL 
      MOV AH,09H 
      INT 21H 
      MOV DL,[BX] 
      ADD DL,30H 
      MOV AH,02H 
      INT 21H 
      INC BX 
      INC BX 
      LOOP DISPLAY 
      MOV AH,4CH 
      INT 21H 






ret 
+0

與其試圖設計一種以這種方式工作的排序算法,我會推薦兩階段方法 - 1)以正常方式對列表進行排序,然後2)將排序列表重新排列爲所需的結構。嘗試在一個階段完成這兩項操作即使在更高級別的語言中也可能會遇到一些挑戰,並且很可能無法執行... – twalberg 2014-12-05 19:29:48

回答

0

替換:

mov cl, val1 

由:

mov cl, [val1] 

這樣它將val1(數字5)的內容移動到cl。在上面的代碼中,它只會將val1的偏移量移動到cl(與lea cl,val1相同)。

+2

這對MASM,TASM或JWASM不正確。我不知道另一個處理'.MODEL SMALL'的彙編程序。 – rkhb 2014-12-05 21:00:05