⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 排序.asm

📁 用汇编编写的
💻 ASM
字号:
        DSEG  SEGMENT               ;数据段:在此处添加程序所需的数据
      NUMBER  DW        20 DUP (?)
       COUNT  DW        ?
        DSEG  ENDS
        CSEG  SEGMENT
              ASSUME    CS:CSEG, DS:DSEG
        MAIN  PROC      FAR         ;主程序入口
              MOV       AX, DSEG
              MOV       DS, AX
              CALL      INPUT       ;从键盘输入一组十进制数(每个数不超过3个字符),存于数组number中
              CALL      SORT        ;将该组数按升序排序
              CALL      DISP        ;将结果送显示器显示,按任意键退出
              MOV       AH,1
              INT       21H         ;程序结束,返回到操作系统系统
              MOV       AX, 4C00H
              INT       21H
        MAIN  ENDP
       INPUT  PROC
              LEA       SI,NUMBER
       NEXT:  MOV       BX, 0
              MOV       CX,3
    NEWCHAR:  MOV       AH, 1       ;键盘输入,每个数据以回车结束
              INT       21H
              CMP       AL,20H      ;全部数据以空格结束
              JZ        TJ
              SUB       AL, 30H
              JL        EXIT        ; <0退出
              CMP       AL, 9
              JG        EXIT        ; >9退出
              CBW
              XCHG      AX, BX
              MOV       CX, 10
              MUL       CX
              XCHG      AX, BX
              ADD       BX, AX
              LOOP      NEWCHAR
       EXIT:
              CALL      CRLF
              INC       COUNT
              MOV       [SI],BX
              ADD       SI,2
              JMP       NEXT
         TJ:  RET
       INPUT  ENDP

        SORT  PROC
              MOV       CX,COUNT
              DEC       CX
      LOOP1:  MOV       DI,CX
              MOV       BX,0
      LOOP2:  MOV       AX,NUMBER[BX]
              CMP       AX,NUMBER[BX+2]
              JLE       CONTINUE
              XCHG      AX,NUMBER[BX+2]
              MOV       NUMBER[BX],AX
   CONTINUE:  ADD       BX,2
              LOOP      LOOP2
              MOV       CX,DI
              LOOP      LOOP1
              RET
        SORT  ENDP

        DISP  PROC
              MOV       CX,COUNT
              LEA       SI,NUMBER
    REPEAT1:
              MOV       BX,[SI]
              MOV       DI,100D
              CALL      DEC_DIV
              MOV       DI,10D
              CALL      DEC_DIV
              MOV       DI,1D
              CALL      DEC_DIV
              CALL      CRLF
              ADD       SI,2
              LOOP      REPEAT1
              RET
        DISP  ENDP
     DEC_DIV  PROC      NEAR
              MOV       AX,BX
              MOV       DX,0
              DIV       DI
              MOV       BX,DX
              MOV       DL,AL
              ADD       DL,30H
              MOV       AH,2
              INT       21H
              RET
     DEC_DIV  ENDP

        CRLF  PROC      NEAR
              MOV       DL,0AH
              MOV       AH,2
              INT       21H
              MOV       DL,0DH
              MOV       AH,2
              INT       21H
              RET
        CRLF  ENDP
        CSEG  ENDS
              END       MAIN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -