| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 533 人关注过本帖
标题:帮忙看看问题出在哪儿?不能输出排序的结果
只看楼主 加入收藏
西天寒星
Rank: 1
等 级:新手上路
帖 子:5
专家分:1
注 册:2010-11-12
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:2 
帮忙看看问题出在哪儿?不能输出排序的结果
STACK  SEGMENT  STACK
         DB  200  DUP(0)
STACK  ENDS

DATA  SEGMENT
BUF1  DB  30H,10H,40H,20H,50H,70H,60H,90H,80H,0,0FFH
TAB1  DB  'pai xu qian de shun xu shi: ',0DH,0AH,'$'
N1=$-BUF1
BUF2  DB  22H,11H,33H,55H,44H,77H,66H,99H,88H,0AAH,0EEH,0
TAB2  DB  0DH,0AH,'pai xu qian de shun xu shi: ',0DH,0AH,'$'
N2=$-BUF2

DATA  ENDS

CODE  SEGMENT
       ASSUME  CS:CODE,DS:DATA,SS:STACK
BEGIN:
          MOV   AX,DATA
           MOV   DS,AX

    MOV BX,AX
    LEA DX,TAB1
    MOV AH,9
    INT 21H
    MOV AX,BX

           LEA  BX,BUF1
           MOV  CX,N1
           CALL  SORT

    MOV BX,AX   
    LEA DX,TAB2
    MOV AH,9
    INT 21H
    MOV AX,BX

           LEA   BX,BUF2
           MOV  CX,N2
           CALL  SORT  
   
         MOV   AH,4CH
           INT    21H

SORT        PROC           
    PUSH   AX      
            PUSH   DX
            PUSH   SI
            PUSH   DI
            MOV    DX,CX
            DEC    DX
            MOV    SI,1
 
LOPI:  
    MOV    DI,SI
            INC    DI
            MOV    AL,[BX+SI-1]
LOPJ:
    CMP    AL,[BX+DI-1]
            JBE    NEXT
    XCHG   [BX+DI-1],AL
    MOV    [BX+SI-1],AL
NEXT:
    INC     DI
           CMP     DI,CX
           JBE      LOPJ
    CALL PRINTIT

          INC SI  
        CMP SI,DX
        JBE LOPI
           POP      DI
           POP      SI
           POP      DX
           POP      AX
           RET
SORT    ENDP

PRINTIT      PROC  
    MOV DL,AL
    MOV AH,2
    INT 21H
    RET
PRINTIT   ENDP

CODE    ENDS
        END  BEGIN
搜索更多相关主题的帖子: 结果 输出 结果 输出 
2010-11-22 22:54
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:7 
程序代码:
STACK  SEGMENT  STACK
         DB  200  DUP(0)
STACK  ENDS

DATA  SEGMENT
    BUF1  DB  30H,10H,40H,20H,50H,70H,60H,90H,80H,0,0FFH
    N1=$-BUF1
    TAB1  DB  'pai xu qian de shun xu shi: ',0DH,0AH,'$'
   

    BUF2  DB  22H,11H,33H,55H,44H,77H,66H,99H,88H,0AAH,0EEH,0
    N2=$-BUF2
    TAB2  DB  0DH,0AH,'pai xu qian de shun xu shi: ',0DH,0AH,'$'
   

DATA  ENDS

CODE  SEGMENT
       ASSUME  CS:CODE,DS:DATA,SS:STACK
BEGIN:
    MOV   AX,DATA
    MOV   DS,AX

    MOV BX,AX
    LEA DX,TAB1
    MOV AH,9
    INT 21H
    MOV AX,BX

           LEA  BX,BUF1
           MOV  CX,N1
           CALL  SORT

    MOV BX,AX  

    LEA DX,TAB2
    MOV AH,9
    INT 21H
    MOV AX,BX

           LEA   BX,BUF2
           MOV  CX,N2
           CALL  SORT 

  

         MOV   AH,4CH
           INT    21H

SORT        PROC          

    PUSH   AX     

            PUSH   DX
            PUSH   SI
            PUSH   DI
           

            MOV    DX,CX
            DEC    DX
            MOV    SI,1

LOPI: 

    MOV    DI,SI
            INC    DI
            MOV    AL,[BX+SI-1]
LOPJ:
    CMP    AL,[BX+DI-1]
            JBE    NEXT
    XCHG   [BX+DI-1],AL
    MOV    [BX+SI-1],AL
NEXT:
    INC     DI
           CMP     DI,CX
           JBE      LOPJ
    CALL PRINTIT
    call putspc

          INC SI 

        CMP SI,DX
        JBE LOPI
           POP      DI
           POP      SI
           POP      DX
           POP      AX
           RET
SORT    ENDP


putspc proc
    push ax
    mov dl,' '
    mov ah,2
    int 21h
    pop ax
    ret
putspc endp

PRINTIT      PROC
    push cx
    mov cl,4
    rol al,cl
    mov dl,al
    and dl,0fh
    call putchar
    rol al,cl
    mov dl,al
    and dl,0fh
    call putchar
    pop cx
    RET
PRINTIT   ENDP

putchar proc
    push ax
    cmp dl,0ah
    jb put1
    add dl,7
put1:
    add dl,30h
    MOV AH,2
    INT 21H
    pop ax
    ret
putchar endp
CODE    ENDS
        END  BEGIN

2010-11-23 19:16
西天寒星
Rank: 1
等 级:新手上路
帖 子:5
专家分:1
注 册:2010-11-12
收藏
得分:0 
putspc proc
    push ax
    mov dl,' '       ;这两句什么意思
    mov ah,2
    int 21h
    pop ax
    ret
putspc endp

PRINTIT      PROC
    push cx             ;为什么是CX进栈
    mov cl,4
    rol al,cl
    mov dl,al
    and dl,0fh
    call putchar
    rol al,cl
    mov dl,al
    and dl,0fh
    call putchar
    pop cx
    RET
PRINTIT   ENDP

putchar proc
    push ax
    cmp dl,0ah         ;这句有什么用?
    jb put1
    add dl,7
put1:
    add dl,30h
    MOV AH,2
    INT 21H
    pop ax
    ret
putchar endp
还请帮忙解释一下。结果显示的有点不对。谢谢了。
2010-11-23 21:19
快速回复:帮忙看看问题出在哪儿?不能输出排序的结果
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022591 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved