不知道如何在汇编中对一串单词进行升序排序

问题描述 投票:0回答:0

我有一个由 4 个单词组成的字符串(最少 1 个字符,最多 4 个字符),我需要对它们进行排序(即 {'1234', 'abcd', '123', 'e'} 排序后我们将有{'e', '123', '1234', 'abcd'})。我需要按它们的 ascii 码对它们进行排序。

我的代码(冒泡排序部分不完整) DOSSEG .型号小 .堆栈 32 。数据 NUMERE DB 0Dh,0Ah,'Nr.(1)=$' 大骨节病数据库 5,0,0,0,0,0,0 存储 DB 4 DUP(20 小时、20 小时、20 小时、20 小时) .代码

开始:MOV AX,@DATA MOV DS,AX

MOV CX, 4
MOV DI, (OFFSET STORE) + 4

再次:按下 CX;质询先生 MOV DX,偏移量 MOV啊,9 国际 21 小时 公司[数字+6]

MOV [KBD+1], 0 ; se citeste un numar cu max. 4 cifre
MOV AH, 0Ah
MOV DX, OFFSET KBD
INT 21h

MOV CL, [KBD+1]
MOV CH, 0
MOV SI, (OFFSET KBD) + 2
PUSH DI
SUB DI, CX

下一个:MOV AL,[SI] MOV [DI], 铝 国际公司 INC DI 循环下一个 流行迪 添加 DI,4

POP CX
LOOP AGAIN

;冒泡排序开始

MOV CX, 3 排序:
推送客户体验 MOV CX,3 MOV SI,胶印店 MOV DI,OFFSET STORE+4 内循环: MOV 斧头,[DI] CMP [SI], 斧头 JNG NO_SWAP 交换:

    NO_SWAP:

    INC SI
    INC DI
LOOP INNER_LOOP
INC SI

流行客户体验 循环排序

;冒泡排序结束

MOV SI,OFFSET STORE MOV CX,4 显示:调用 CRLF 推送客户体验 MOV CX,4 NUM:MOV AH,2 MOV DL,[SI] 国际 21 小时 国际公司 循环次数 流行客户体验 循环显示

MOV AH, 4CH
INT 21H

CRLF: MOV AH,2 MOV DL,0Ah 国际 21 小时 MOV AH,2 MOV DL,0Dh 国际 21 小时 返回

END START

我尝试了多种方法,但我不知道如何在组装中做到这一点,所以请帮助我

string sorting assembly ascii
© www.soinside.com 2019 - 2024. All rights reserved.