Arrays 汇编程序以特殊方式排序?请帮忙?
8086汇编语言程序,对数组进行如下排序: 数组中的最小值应放在第一个单元格中。 最后一个单元格中的第二个最小值。 数组第二个单元格中的第三个最小值。 第四个最小值,位于 大堆 •继续上述程序,直到阵列完全排序。 注意,在上述排序技术中,初始数组中的大值 将最终放置在阵列的中间部分 以下是我的代码,但按正常方式进行排序:Arrays 汇编程序以特殊方式排序?请帮忙?,arrays,sorting,assembly,Arrays,Sorting,Assembly,8086汇编语言程序,对数组进行如下排序: 数组中的最小值应放在第一个单元格中。 最后一个单元格中的第二个最小值。 数组第二个单元格中的第三个最小值。 第四个最小值,位于 大堆 •继续上述程序,直到阵列完全排序。 注意,在上述排序技术中,初始数组中的大值 将最终放置在阵列的中间部分 以下是我的代码,但按正常方式进行排序: org 100h .MODEL SMALL .DATA TABLE DB 9,2,6,8,5,1
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
替换:
mov cl, val1
作者:
通过这种方式,它将val1的内容从数字5移动到cl。在上面的代码中,它只会将val1到cl的偏移量移动到与lea cl,val1相同的位置。而不是试图设计一种以这种方式工作的排序算法,我建议采用两个阶段的方法——1以正常方式对列表进行排序,然后2将排序后的列表重新排列到所需的结构中。即使在更高级的语言中,尝试在一个过程中同时完成这两个任务也可能会有点挑战性,并且可能不会表现得很好……这对于MASM、TASM或JWASM是不正确的。我不知道还有哪一个汇编程序可以处理。模型很小。
mov cl, [val1]