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

📄 keshe.asm

📁 汇编语言多编写的 ASM 能够实现三级菜单 完整的课程设计论文 可以交的
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;HUIBIAN PROGRAM
;*****************************************************
         WIN  MACRO     OPR1,OPR2,OPR3,OPR4,OPR5,OPR6       ;建立窗口 宏定义
              MOV       AH,06H
              MOV       AL,OPR1
              MOV       BH,OPR2
              MOV       CH,OPR3
              MOV       CL,OPR4
              MOV       DH,OPR5
              MOV       DL,OPR6
              INT       10H
              ENDM
     DATAREA  SEGMENT
      THIRTY  DB        50H
;message table
        MSG0  DB        'SELECT      EXIT         HELP $                   '
        MSG1  DB        'compositor  Xchg                                  '
        MSG5  DB        'Big to Smsll                                      '
        MSG6  DB        'Small to big                                      '
        MSG7  DB        'please input 5 counts                             '
        MSGD  DB        'please input B_word                               '
        MSGB  DB        'please input S_word                               '
      ERRMSG  DB        'error information                                 '
       MANU0  DB        'Input 0 Active SELECT                             '
       MANU1  DB        'Input 1 Active EXIT                               '
       MANU2  DB        'Input 2 Active HELP                               '
       MANU3  DB        'Input 3 Active Compositor                         '
       MANU4  DB        'Input 4 Active Xchg                               '
       MANU5  DB        'Input 5 Active Big to small                       '
       MANU6  DB        'Input 6 Active Small to Big                       '
       MANU7  DB        'daxie to xiaoxie xchg                             '
       MANU8  DB        'xiaoxie to daxie xchg                             '
       MANU9  DB        'Input 7 Active B_word--S_word                     '
      MANU10  DB        'Input 8 Active S_word-- B_word                    '
      HELP_0  DB        '***********************************************$'
      HELP_1  DB        'welcome use the small programe! $' ;帮助内容
      HELP_2  DB        'please the first active help! $'
      HELP_3  DB        '0 Active SELECT,1 Active EXIT,2 Active HELP $    '
      HELP_4  DB        'good lucky!! $'
      HELP_5  DB        '***********************************************$'
      HELP_6  DB        'The Maker:GAO YA  $                               '
      HELP_7  DB        '***********************************************$'
        MSG9  DB        'Do you really exit $'
           A  DW        5 DUP(?)
     DATAREA  ENDS
;*****************************************************
     PROGNAM  SEGMENT               ;define code segment
;------------------------------------------------------
        MAIN  PROC      FAR         ;main part of program
              ASSUME    CS :PROGNAM, DS:DATAREA
      START:                        ; starting execution address
              PUSH      DS
              SUB       AX,AX
              PUSH      AX
              MOV       AX,DATAREA
              MOV       DS,AX       ;set DS register to current data segment
;********************************************************
      BEGIN0  PROC      NEAR        ;主菜单
              PUSH      AX
              PUSH      BX
              PUSH      CX
              PUSH      DX
              MOV       AH,9
              LEA       DX,MSG0
              INT       21H
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              MOV       BX,OFFSET MANU0
              CALL      DISPLAY1
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              MOV       BX,OFFSET MANU1
              CALL      DISPLAY1
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              MOV       BX,OFFSET MANU2
              CALL      DISPLAY1
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              POP       DX
              POP       CX
              POP       BX
              POP       AX
        HELP  PROC      NEAR        ;HELP程序
              MOV       AH,7
              INT       21H
              CALL      CLEARSCREEN
              CMP       AL,'2'
              JE        BEGIN22
              CMP       AL,'0'
              JE        BEGIN1
              CMP       AL,'1'
              JE        D
          D:  CALL      EXIT2
        HELP  ENDP
     BEGIN1:
              SUB       AL,'0'
              JE        B
          B:  CALL      SELECT
    BEGIN22:  MOV       AH,9        ;如输入为2,则输出HELP里面的内容
              LEA       DX,HELP_0
              INT       21H
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
             ;--------------------------
              MOV       AH,9
              LEA       DX,HELP_1
              INT       21H
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
             ;---------------------------
              MOV       AH,9
              LEA       DX,HELP_2
              INT       21H
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              ;--------------------------
              MOV       AH,9
              LEA       DX,HELP_3
              INT       21H
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
             ;-----------------------
              MOV       AH,9
              LEA       DX,HELP_4
              INT       21H
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              ;-------------------------
              MOV       AH,9
              LEA       DX,HELP_5
              INT       21H
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              ;--------------------
              MOV       AH,9
              LEA       DX,HELP_6
              INT       21H
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
             ;---------------------------
              MOV       AH,9
              LEA       DX,HELP_7
              INT       21H
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              CALL      BEGIN0
      BEGIN0  ENDP
      SELECT  PROC      NEAR        ;输入为零,则执行SELECT
              MOV       BX,OFFSET MSG1
              CALL      DISPLAY1
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              MOV       BX,OFFSET MANU3
              CALL      DISPLAY1
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              MOV       BX,OFFSET MANU4
              CALL      DISPLAY1
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
      SELECT  ENDP
     BEGIN2:                        ;执行从到到小或从小到大排序
              MOV       AH,7
              INT       21H
              CALL      CLEARSCREEN
              CMP       AL,'3'
              JE        BEGIN4
              CMP       AL,'4'
              JE        BEGIN11
     BEGIN4:
              MOV       BX,OFFSET MANU5
              CALL      DISPLAY1
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              MOV       BX,OFFSET MANU6
              CALL      DISPLAY1
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
        B_S:  MOV       AH,7        ;如输入为5或6,执行大小写转换
              INT       21H
              CALL      CLEARSCREEN
              CMP       AL,'5'
              JE        BEGIN3
              CMP       AL,'6'
              JE        S_B
     BEGIN3:
              MOV       BX,OFFSET MSG7
              CALL      DISPLAY1
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              JMP       BEGIN9
        S_B:
              CALL      CLEARSCREEN
              JE        BEGIN5
     BEGIN5:
              MOV       BX,OFFSET MSG7
              CALL      DISPLAY1
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              JMP       BEGIN10
              JMP       BEGIN14
    BEGIN11:
              CALL      CLEARSCREEN
              JE        BEGIN6
     BEGIN6:
              MOV       BX,OFFSET MANU9
              CALL      DISPLAY1
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
              MOV       BX,OFFSET MANU10
              CALL      DISPLAY1
              MOV       DL,0DH
              CALL      DISPCHAR
              MOV       DL,0AH
              CALL      DISPCHAR
     BEGIN7:  MOV       AH,7
              INT       21H
              CALL      CLEARSCREEN
              CMP       AL,'1'
              JE        E
              JNE       F
          E:
              CALL      EXIT2
          F:  CMP       AL,'7'
              JE        BEGIN8
              CMP       AL,1
              JE        G
              JNE       H
          G:  CALL      EXIT2       ;调用退出程序
          H:
              CMP       AL,'8'
              JE        BEGIN20
     BEGIN8:
              MOV       BX,OFFSET MSGD
              CALL      DISPLAY1
              CALL      B_SXCHG

⌨️ 快捷键说明

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