装配程序以特殊方式排序?请帮忙?

时间:2014-12-05 17:51:59

标签: arrays sorting assembly

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

1 个答案:

答案 0 :(得分:0)

替换:

mov cl, val1

由:

mov cl, [val1]

这样它将val1(数字5)的内容移动到cl。在上面的代码中,它只会将val1的偏移量移动到cl(与lea cl,val1相同)。