汇编语言程序设计一个小程序
											在数据段的变量BUF中有10个字节型无符号的十进制数,它们以无序的方式存放着,设计一个程序将这些数据按由小到大的方式排列起来,并在屏幕上输出排好序的这10个数。(两数之间用空格分开)										
					
	
				
											如果楼主早一年注册,贴子(不是纯灌水)超过30,我会给你解答.
或者
楼主至少有一个思路,写了若干代码却卡在什么地方,我也会给你解答.
										
					
	
	
	
	      
程序代码:
 CODE  SEGMENT
              ASSUME    CS:CODE
         BUF  DB        12,34,07,78,65,41,99,87,66,246
           N  EQU       $-BUF
         
      START:  PUSH      CS
              POP       DS
              PUSH      CS
              POP       ES
              LEA       SI,BUF
              MOV       CX,N
              CALL      SORT
              LEA       SI,BUF
              MOV       CX,N
              CALL      DSPBCD
              MOV       AH,4CH
              INT       21H
;===============================
       DSPBCD PROC    NEAR
          CLD
NEXT:
          PUSH     CX
          LODSB
          MOV    AH,0
          CALL    PRINT_AX;印出AX值
          MOV     AH,2
          MOV     DL,20H    ;显示空白
          INT    21H
          POP     CX
          LOOP     NEXT 
          RET
       DSPBCD ENDP    
;===============================
;输出AX的ASCII到屏幕
     PRINT_AX PROC      NEAR
          MOV    CX,0    ;清0
          MOV    BX,10    ;除法准备
PPAX1:
          MOV    DX,0    ;清0
          DIV    BX    ;AX /10 ,若1234 ,除10后,DL得余数4,
          PUSH    DX    ;保存, AX=1234,依次保存4,3,2,1
          INC    CX    ;累加个数
          OR    AX,AX    ;是否已除尽
          JNZ    PPAX1    ;不是,再除
          MOV    BL,CL    ;存个数
PPAX2:
          POP    DX    ;后入先出,先印出第一数,然后第二....
          OR    DL,30H    ;转ASCII
          MOV     AH,2    ;存入字串缓冲
          INT    21H
          LOOP    PPAX2     ;下一个
          RET
     PRINT_AX ENDP
;===============================
; 单个字符串(或者字节数组)内部的排序(冒泡排序)
        SORT  PROC      NEAR
      ; 串长度置入cx,串首地址置入 si
              PUSH      AX
              PUSH      CX
              PUSH      DX
              PUSH      SI
              PUSH      DI
              PUSHF
              PUSH      CX
              POP       DX
              DEC       DX
    @SORTL1:
              MOV       CX,DX
              MOV       DI,SI
    @SORTL2:
              MOV       AL,[DI+1]
              CMP       AL,[DI]
              JA        @SORTNEXT   ; 无符号 升序
              XCHG      AL,[DI]
              MOV       [DI+1],AL
  @SORTNEXT:
              INC       DI
              LOOP      @SORTL2
              DEC       DX
              JNZ       @SORTL1
              POPF
              POP       DI
              POP       SI
              POP       DX
              POP       CX
              POP       AX
              RET
        SORT  ENDP
;===============================================================  
        CODE  ENDS
              END       START
[此贴子已经被作者于2018-6-19 06:43编辑过]