编写一个汇编语言程序,它先接受一个字符串然后显示其中数字字符的个数,英文字母的个数和字符串的长度

 我来答
永恒pascal
推荐于2018-03-07 · TA获得超过4358个赞
知道大有可为答主
回答量:3902
采纳率:93%
帮助的人:728万
展开全部

        CODE  SEGMENT
              ASSUME    CS:CODE
              ORG       100H
      START:  JMP       BB
      INSTR0  DB        256 DUP(' ')
              DB        10,13,'$'
       INNUM  DW        0

      LETSTR  DB        10,13,'Letter:'
      LETTER  DB        256 DUP(' ')
   LETTERNUM  DW        0

      NUMSTR  DB        10,13,'Number:'
      NUMBER  DB        256 DUP(' ')
   NUMBERNUM  DW        0

      OTHSTR  DB        10,13,'Othser:'
       OTHER  DB        256 DUP(' ')
    OTHERNUM  DW        0

        LFCR  DB        10,13,'$'

         BB:  PUSH      CS
              POP       ES
              PUSH      CS
              POP       DS
              LEA       DI,INSTR0
        BB1:  MOV       AH,1
              INT       21H
              CMP       AL,13
              JE        NEXT1
              MOV       [DI],AL
              INC       WORD PTR[INNUM]
              INC       DI
              JMP       BB1
      NEXT1:
              LEA       SI,INSTR0
              MOV       CX,INNUM
         LP:
              CMP       BYTE PTR[SI],'0'
              JL        N2
              CMP       BYTE PTR[SI],'9'
              JG        N2
              MOV       AL,[SI]
              MOV       DI,NUMBERNUM
              MOV       BYTE PTR NUMBER[DI],AL
              INC       WORD PTR[NUMBERNUM]
              JMP       N5
         N2:
              CMP       BYTE PTR[SI],'a'
              JL        N3
              CMP       BYTE PTR[SI],'z'
              JG        N3
              MOV       AL,[SI]
              MOV       DI,LETTERNUM
              MOV       BYTE PTR LETTER[DI],AL
              INC       WORD PTR[LETTERNUM]
              JMP       N5
         N3:
              CMP       BYTE PTR[SI],'A'
              JL        N4
              CMP       BYTE PTR[SI],'Z'
              JG        N4
              MOV       AL,[SI]
              MOV       DI,LETTERNUM
              MOV       BYTE PTR LETTER[DI],AL
              INC       WORD PTR[LETTERNUM]
              JMP       N5
         N4:
              MOV       AL,[SI]
              MOV       DI,OTHERNUM
              MOV       BYTE PTR OTHER[DI],AL
              INC       WORD PTR[OTHERNUM]
         N5:
              INC       SI
              LOOP      LP
             
              MOV       DI,LETTERNUM
              MOV       BYTE PTR LETTER[DI+1],'$'
              MOV       DI,NUMBERNUM
              MOV       BYTE PTR NUMBER[DI+1],'$'
              MOV       DI,OTHERNUM
              MOV       BYTE PTR OTHER[DI+1],'$'
             
              MOV       AH,9
              LEA       DX,LETSTR
              INT       21H
              MOV       AH,9
              LEA       DX,NUMSTR
              INT       21H
              MOV       AH,9
              LEA       DX,OTHSTR
              INT       21H
              LEA       DX,LFCR
              MOV       AH,9
              INT       21H
              MOV       AX,[INNUM]
              CALL      DISPAX
             
              MOV       AH,4CH
              INT       21H
;===============================================
              
; 将要显示的无符号数置于 ax 中 
      DISPAX  PROC      NEAR
              PUSH      AX
              PUSH      BX
              PUSH      CX
              PUSH      DX
              PUSH      SI
              PUSH      DI
              PUSH      BP
              PUSHF
              PUSH      DS
              PUSH      CS
              POP       DS
              MOV       BYTE PTR NZ,0
              PUSH      AX
              LEA       SI,DIVARR
              MOV       CX,5
         @1:
              POP       AX
              MOV       DX,0
              MOV       BX,[SI]
              DIV       BX
              PUSH      DX
              CMP       AL,0
              JNE       @2
              CMP       BYTE PTR NZ,1
              JE        @2
              CMP       CX,1
              JE        @2
              MOV       DL,20H
              JMP       @3
         @2:
              ADD       AL,30H
              MOV       DL,AL
              MOV       BYTE PTR NZ,1
         @3:
              MOV       AH,2
              INT       21H
              INC       SI
              INC       SI
              LOOP      @1
              POP       DX
              POP       DS
              POPF
              POP       BP
              POP       DI
              POP       SI
              POP       DX
              POP       CX
              POP       BX
              POP       AX
              RET
      DIVARR  DW        10000,1000,100,10,1
          NZ  DB        0
      DISPAX  ENDP
;------------------------------------------              
              
        CODE  ENDS
              END       START
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式