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

📄 ex4fsr.asm

📁 汇编实现一位数加数
💻 ASM
字号:
        DATA  SEGMENT
       INFON  DB        13,10, 'Enter keyword :$'
      INFON1  DB        13,10,'Enter Sentence:$'
      INFON2  DB        13,10,'Match at location:$'
      INFON3  DB        'H of the sentence.$', 13,10

    SENTENCE  DB        30,?,30 DUP(?)
     KEYWORD  DB        30,?,30 DUP(?)


          NO  DB        13,10,'No,Match!$'

        DATA  ENDS

        CODE  SEGMENT
              ASSUME    DS:DATA,CS:CODE

      START:  MOV       AX,DATA
              MOV       DS,AX
              MOV       ES,AX

              XOR       CX,CX

              CLD                   ;指明指针移动方向

    MESSAGE:  LEA       DX,INFON1   ;提示输入sentence
              MOV       AH,9
              INT       21H

    INPUTST:  LEA       DX,SENTENCE ;输入sentence,并赋值给di
              MOV       AH,0AH
              INT       21H

              MOV       DI,DX

              MOV       CL,DI[1]    ;CX中存储sentence元素的个数

              INC       DI
              INC       DI          ;把指针移动到sentence的第一个元素

              MOV       BX,DI       ;sentence赋值给BX


   MESSAGE1:  LEA       DX,INFON    ;提示输入keyword
              MOV       AH,9
              INT       21H

    INPUTKE:  LEA       DX,KEYWORD  ;输入keyword
              MOV       AH,0AH
              INT       21H



     COMPER:  PUSH      CX          ;保护sentence的循环次数

              MOV       SI,DX       ;把keyword赋值给si
              XOR       CX,CX
              MOV       CL,SI[1]    ;CX中存储keyword元素的个数

              INC       SI
              INC       SI          ;把指针移动到keyword的第一个元素

              REPE      CMPSB       ;比较sentece和keyword的元素

              JE        PRINTY      ;相等则跳出循环



              POP       CX          ;弹出sentence的循环次数
              LOOP      COMPER


     PRINTN:  LEA       DX,NO       ;打印不匹配
              MOV       AH,9
              INT       21H

              JMP       EXIT

     PRINTY:  MOV       SI,DX       ;sentence的首元素减去keyoword的元素个数+1
              SUB       DI,SI[1]
              INC       DI

              SUB       DI,BX

              AND       DI,00FFH
              MOV       BX,DI       ;显示位数的值存入bx中

              LEA       DX,INFON2   ;显示匹配位置为:的提示信息
              MOV       AH,9
              INT       21H



                                     ;把显示输出变成十六进制
              MOV       CH,4        ;循环四次
     ROTATE:  MOV       CL,4
              ROL       BX,CL       ;左移四位
              MOV       AL,BL

              AND       AL,0FH
              ADD       AL,30H

              CMP       AL,30H      ;不显示0
              JZ        LO

              CMP       AL,3AH
              JL        PRINTIT
              ADD       AL,7H

    PRINTIT:  MOV       DL,AL
              MOV       AH,2
              INT       21H

         LO:  DEC       CH
              JNZ       ROTATE

              LEA       DX,INFON3
              MOV       AH,9
              INT       21H


       EXIT:  MOV       AH,4CH
              INT       21H

        CODE  ENDS
              END       START


⌨️ 快捷键说明

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