统计一个字符串中某个字母的个数

来源:互联网 发布:mac的桌面 编辑:程序博客网 时间:2024/05/01 19:04

用汇编语言编写程序:统计一个字符串中某个字母的个数。 求高手啊!!急急急!!!
一天内给我 谢谢啊
悬赏分:45 | 提问时间:2011-7-1 20:26 | 提问者:huisimei0902 | 问题为何被关闭
;===========================================
;程序如下:
;---------------------------------------------------
DATA SEGMENT

    PARS  DB 100               ;准备接收100个字符.
    NNN   DB ?                 ;用于存放实际输入的个数.
    III   DB 100 DUP(?)      ;100字节的空间.
    CHR   DB  0
    C_N   DB  0

   MES_I  DB  13, 10, 'Input  STR : $  ' ;用于提示.
   MES_N  DB  13, 10, 'Input CHAR : $  ' ;用于提示.
   MES_O  DB  13, 10, 'THE num IS : $  ' ;用于提示.

DATA ENDS
;---------------------------------------------------
CODE SEGMENT
      ASSUME  CS:CODE, DS:DATA
START:
      MOV  AX, DATA
      MOV  DS, AX

      MOV  DX, OFFSET MES_I
      MOV  AH, 9                 ;9号功能调用,显示提示.
      INT  21H
      MOV  DX, OFFSET PARS
      MOV  AH, 10                ;10号功能调用,接收键盘输入.
      INT  21H
      MOV  DX, OFFSET MES_N
      MOV  AH, 9                 ;9号功能调用,显示提示.
      INT  21H
      MOV  AH, 1
      INT  21H
      MOV  CHR, AL
;---------------------------------------------------
      MOV  CL, NNN               ;收到字符的个数.
      MOV  CH, 0
      CMP  CX, 0
      JNZ  DO_IT
      JMP  EXIT
DO_IT:
      LEA  SI, III               ;键入字符的起始地址.
;----------------------------下面开始循环统计.
AGAIN:
      MOV  AL, [SI]              ;取来一个.
      CMP  AL, CHR
      JNZ  NEXT
      INC  C_N
NEXT:
      INC  SI
      LOOP AGAIN
;----------------------------
      MOV  DX, OFFSET MES_O
      MOV  AH, 9                 ;9号功能调用,显示提示.
      INT  21H
      MOV  AL, C_N
      MOV  AH, 0
      CALL PRINTAX
;----------------------------显示结束.
EXIT:
      MOV  AH, 4CH
      INT  21H
;------------------------------
PRINTAX PROC            ;输出AX中的无符号整数.
      MOV  BX, 10
      OR   AX, AX
      JZ   _0_
LOOP_P:
      XOR  DX, DX
      DIV  BX
      MOV  CX, AX
      OR   CX, DX
      JZ   _E_  
      PUSH DX     
      CALL LOOP_P
      POP  DX     
      ADD  DL, '0'      ;变成ASCII码.
      JMP  _1_
_0_:  MOV  DL, '0'      ;是0则直接输出.
_1_:  CALL PUTC
_E_:  RET
PRINTAX ENDP
;------------------------------
PUTC  PROC 
      MOV  AH, 2
      INT  21H
      RET
PUTC  ENDP
;------------------------------
CODE  ENDS
      END  START
;============================================
回答者: 做而论道  | 十五级 | 2011-7-1 23:27
做而论道的回答,是在楼主要求的期限内,程序也是正确的,大家可以检验。
楼主却无故关闭了题目,言而无信。
原题网址:http://zhidao.baidu.com/question/286767972.html
;============================================

0 0
原创粉丝点击