论坛: 编程破解 标题: 三个单字无符号数按大到小重排,请大家评述! 复制本贴地址    
作者: pillow_911 [pillow_911]    论坛用户   登录
设有三个单字无符号数存放在buffer开始的缓冲区中,定个能将它们按大到小重

新排列的程序

设数据段就只在三个要排序的是数据,定义如下:
;程序名:T3-6.asm
;功能:实现三个无符号数的由大到小的排序
DATAS SEGMENT
BUFFER DB 87,234,123
DATAS ENDS

有很多种方法可实现三个数的排序,我们采用交换法,先得到三个数中的最大数

,然后再得到剩下两个数的最大数。
为了方便,先把要排序的三个数取到三个寄存器中,源程序代码段如下所示:
CODES SEGMENT
      ASSUME CS:CODES,DS:DATAS
START:MOV AX,DATAS
      MOV DS,AX
      MOV SI,OFFSET BUFFER
      MOV AL,[SI]
      MOV BL,[SI+1]
      MOV CL,[SI+2]
      CMP AL,BL
      JAE NEXT1
      XCHG AL,BL
NEXT1:CMP AL,CL
      JAE NEXT2
      XCHG AL,CL
NEXT2:CMP BL,CL
      JAE NEXT3
      XCHG BL,CL
NEXT3:MOV [SI],AL
      MOV [SI+1],BL
      MOV [SI+2],CL
      MOV AH,4CH
      INT 21H
CODES:ENDS
      END  START


[此贴被 286(unique) 在 10月10日15时49分 编辑过]

地主 发表时间: 04-10-10 15:33

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号