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

📄 huibian.asm

📁 用汇编语言实现的:首先通过键盘输入一已知长度的字节数组
💻 ASM
字号:
;本试验的任务是将输入的已知长度字节数组按递增排序并显示结果,然后输入一个数在该数组中查找。
        DATA  SEGMENT   COMMON
          INPUT_MESSAGE  DB        'Please input ten numbers(-999 to +999 with "-" or "+"),press "Entey" after input one number:',13,10,'$'
          SEARCH_MESSAGE  DB        'Please input the number(-999 to +999) you want to search',13,10,'$'
            FIND_MESSAGE  DB        13,10,'The number is in the arrray ','$'
          UNFIND_MESSAGE  DB        13,10,'The number is not in the array',13,10,'$'
 OUT_MESSAGE  DB        'The numbers that from max to min are:',13,10,'$'
  IN_ASC_BUF  DB        5
              DB        ?
              DB        5 DUP(?)
    BIN_BUF1  DW        ?
          OUTPUT_MESSAGE  DB        0AH , 'THE SUM IS:' , '$'
 OUT_ASC_SUM  DB        4 DUP(?) , '$'

        CRLF  DB        13,10,'$'
           A  DB        10 DUP(?)
        DATA  ENDS
;......................................................
        CSEG  SEGMENT
        MAIN  PROC      FAR
              ASSUME    CS:CSEG ,  DS:DATA
              MOV       AX , DATA
              MOV       DS , AX
              CALL      PAIXU
              CALL      CHAZHAO
              MOV       AX,4C00H
              INT       21H
        MAIN  ENDP
       PAIXU  PROC      NEAR
      INPUT:  MOV       AX,DATA
              MOV       DS,AX
              MOV       DX , OFFSET INPUT_MESSAGE
              MOV       AH , 9
              INT       21H
              MOV       DI,0
        INA:  MOV       DX , OFFSET IN_ASC_BUF

              MOV       AH , 10
              INT       21H
              MOV       CL ,  IN_ASC_BUF+1
              MOV       CH , 0
              DEC       CL
              MOV       BX , OFFSET IN_ASC_BUF+3
              PUSH      BX
              PUSH      CX
         L1:
              MOV       AL , [BX]
              AND       AL , 0FH
              MOV       [BX] , AL
              INC       BX
              LOOP      L1
              POP       CX
              POP       BX
              MOV       AX , 0
              MOV       SI , 10
         L2:
              MUL       SI
              ADD       AL , [BX]
              ADC       AH , 0
              INC       BX
              LOOP      L2
              AND       AL,7FH
              CMP       IN_ASC_BUF+2 , '+'
              JZ        AB
              NEG       AL
         AB:  MOV       A[DI],AL
              ADD       DI,1
              CMP       DI,10
              JZ        ORDER
              MOV       AH,9
              LEA       DX,CRLF
              INT       21H
              JMP       INA
      ORDER:
              MOV       CX,10
              DEC       CX
      LOOP1:  MOV       DI,CX
              MOV       BX,0
      LOOP2:  MOV       AL,A[BX]
              CMP       AL,A[BX+1]
              JGE       COTINUE
              XCHG      AL,A[BX+1]
              MOV       A[BX],AL
    COTINUE:  ADD       BX,1
              LOOP      LOOP2
              MOV       CX,DI
              LOOP      LOOP1
     OUTPUT:  MOV       AH,9
              LEA       DX,CRLF
              INT       21H
              MOV       AH,9
              LEA       DX,OUT_MESSAGE
              INT       21H
              MOV       DI,0
  OUTPUTONE:
              MOV       AH,9
              LEA       DX,CRLF
              INT       21H
              MOV       AL,A[DI]

              MOV       OUT_ASC_SUM , '+'
              CMP       AL , 0
              JGE       L4
              NEG       AL
              MOV       OUT_ASC_SUM , '-'
         L4:
              CBW
              MOV       BL , 100
              DIV       BL
              ADD       AL , 30H
              MOV       OUT_ASC_SUM+1 , AL
              MOV       AL , AH
              CBW
              MOV       BL , 10
              DIV       BL
              ADD       AL , 30H
              MOV       OUT_ASC_SUM+2 , AL
              ADD       AH , 30H
              MOV       OUT_ASC_SUM+3 , AH
              MOV       AH,9
              LEA       DX, OUT_ASC_SUM
              INT       21H
              ADD       DI,1
              CMP       DI,10
              JZ        EXIT
              JMP       OUTPUTONE
       EXIT:  MOV       AH,9
              LEA       DX,CRLF
              INT       21H
              MOV       AH,9
              LEA       DX,SEARCH_MESSAGE
              INT       21H

              MOV       DX , OFFSET IN_ASC_BUF

              MOV       AH , 10
              INT       21H
              MOV       CL ,  IN_ASC_BUF+1
              MOV       CH , 0
              DEC       CL
              MOV       BX , OFFSET IN_ASC_BUF+3
              PUSH      BX
              PUSH      CX
        LL1:  MOV       AL , [BX]
              AND       AL , 0FH
              MOV       [BX] , AL
              INC       BX
              LOOP      LL1
              POP       CX
              POP       BX
              MOV       AX , 0
              MOV       SI , 10
        LL2:  MUL       SI
              ADD       AL , [BX]
              ADC       AH , 0
              INC       BX
              LOOP      LL2
              AND       AX,7FH
              CMP       IN_ASC_BUF+2 , '+'
              JZ        PEXIT
              NEG       AL
      PEXIT:
              RET
       PAIXU  ENDP
     CHAZHAO  PROC      NEAR
     SEARCH:  MOV       DI,0
  SEARCHONE:  CMP       AL,A[DI]
              JE        EXIT1
              ADD       DI,1
              CMP       DI,10
              JE        EXIT3
              JMP       SEARCHONE
      EXIT1:  LEA       DX,FIND_MESSAGE
              MOV       AH,9
              INT       21H
              JMP       CEXIT
      EXIT3:  MOV       AH,9
              LEA       DX,UNFIND_MESSAGE
              INT       21H
              JMP       CEXIT
      CEXIT:  RET
     CHAZHAO  ENDP
        CSEG  ENDS
              END       MAIN

⌨️ 快捷键说明

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