汇编语言实验——统计小写字母

统计小写字母个数

A1单元开始定义了一个长度为N的字符串,找出其中所有的小写字母并存放到以A2单元开始的存储区中。统计出小写字母的个数,存放到SL单元中。

ASSUME CS:CODE,DS:DATA,SS:STACK
;A1单元开始定义了一个长度为N的字符串,找出其中所有的小写字母并存放到以A2单元开始的存储区中。统计出小写字母的个数,存放到SL单元中。
DATA SEGMENT
        NOTE DB 'Please input the sentence:',0AH,0DH,'$'
        LS DB 'The lower letters are:',0AH,0DH,'$'
        SUM  DB 'The numbers of lower-case letters:',0AH,0DH,'$'
        A1 DB 50 DUP(0)                         ;25个字节空间
        A2 DB 50 DUP(?)                         ;存放小写字母
        SL DW 0                                 ;记录小写字母的数量
DATA ENDS
STACK SEGMENT
        DB 128 DUP(0)
STACK ENDS
CODE SEGMENT
START:
        MOV AX,DATA
        MOV DS,AX
        MOV AX,STACK
        MOV SS,AX
        MOV SP,128
SHOW:
        LEA DX,NOTE
        MOV AH,9
        INT 21H
        
        MOV DI,0
INPUT:
        MOV AH,1
        INT 21H
        CMP AL,0DH
        JE NEXT
        MOV A1[DI],AL
        INC DI                  ;DI记录了存放的总数
        JMP INPUT
NEXT:
        LEA DX,LS
        MOV AH,9
        INT 21H
TRAVERSE:
        MOV SI,0
        MOV CX,DI               ;CX记录总数
        MOV DI,0
CHOOSE:
        CMP SI,CX
        JBE JUDGE
        JMP PRINT
JUDGE:
        CMP A1[SI],61H          ;61H-7AH a-z
        JB OTHER
        CMP A1[SI],7AH
        JG OTHER
        JMP FIND
FIND:
        MOV BL,A1[SI]
        MOV A2[DI],BL
        INC WORD PTR SL[0]
        INC DI
        INC SI
        JMP CHOOSE
OTHER:
        INC SI
        JMP CHOOSE

        
PRINT:
        MOV SI,0
PRINT_LETTER:
        MOV DL,A2[SI]
        INC SI
        MOV AH,02H
        INT 21H
        LOOP PRINT_LETTER

        MOV DL,0AH
        MOV AH,2
        INT 21H

        LEA DX,SUM
        MOV AH,9
        INT 21H
PRINT_NUMS:
        MOV AX,SL[0]
        MOV BX,10
        MOV CX,0
        MOV DX,0
P1:
        DIV BX
        PUSH DX
        INC CX
        CWD
        CMP AX,0
        JNE P1
P2:
        POP DX
        ADD DL,30H
        MOV AH,02H
        INT 21H
        LOOP P2
EXIT:
        MOV AX,4C00H
        INT 21H
CODE ENDS
END START
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值