[汇编] 统计字符


 1 ;编写一个有主程序和子程序结构的程序模块。
2 ;子程序的参数是一个N字节数组的首地址TABLE,数N及字符CHAR。
3 ;要求在N字节数组中查找字符CHAR,并记录该字符出现的次数。
4 ;主程序则要求从键盘接收一串字符以建立字节数组TABLE,
5 ;并逐个显示从键盘输入的每个字符CHAR以及它在TABLE数组中出现的次数。
6 ;(为简化起见,假设出现次数≤15,可以用16进制形式把它显示出来。)
7
8 data segment
9 table db 255 dup(0)
10 n dw 255
11 char db 0
12 num db 0
13 ends
14
15 stack segment
16 dw 100 dup(?)
17 tos label word
18 ends
19
20 code segment
21 main proc far
22 assume cs:code,ds:data,ss:stack
23 start:
24 mov ax,stack ;预处理
25 mov ss,ax
26 mov sp,offset tos
27 push ds
28 sub ax,ax
29 mov ax,data
30 mov ds,ax
31 begin:
32 mov bx,0 ;table数组的指针
33 mov cx,255 ;下面loop循环的次数
34 input: ;循环输入字符串,遇到
35 mov ah,1
36 int 21h
37 cmp al,0DH ;输入换行跳出循环
38 jz set_n
39 mov table[bx],al
40 inc bx ;加1不影响cf
41 loop input
42 set_n: ;循环结束后把数组大小bx给n,然后等待字符输入
43 mov n,bx
44 call disp_crlf
45 input_char:
46 mov ah,1 ;从键盘接收一个字符的DOS功能调用al等于输入内容
47 int 21h
48 cmp al,0DH ;如果输入为换行就停止
49 jz exit
50 mov char,al ;将输入内容给char
51 call search ;调用统计函数
52 mov dl,‘-‘ ;显示一个分隔符
53 mov ah,02h
54 int 21h
55 mov dl,num ;计算的结果放在num中,传入dl中
56 add dl,30H ;把dl转换为ascial码并输出
57 cmp dl,39H
58 jbe next
59 add dl,07H
60 next:
61 mov ah,2
62 int 21H
63 call disp_crlf
64 jmp short input_char
65 exit:
66 ret
67 main endp
68 ;---------------------------------
69 search proc near
70 mov si,0 ;table指针
71 mov cx,n ;循环次数
72 mov num,0 ;计算个数
73 mov al,char ;把待查自符放在al中
74 rotate: ;循环查找,找到就num++
75 cmp al,table[si]
76 jnz rotate1
77 inc num
78 rotate1:
79 inc si
80 loop rotate
81 ret
82 search endp
83 ;--------------------------------
84 disp_crlf proc near;换行子函数
85 mov dl,0DH
86 mov ah,02H
87 int 21H
88 mov dl,0AH
89 mov ah,02H
90 int 21H
91 ret
92 disp_crlf endp
93 ;-------------------------------
94 code ends
95 end start
96

[汇编] 统计字符

时间: 2024-11-12 10:14:08

[汇编] 统计字符的相关文章

C语言统计字符数

一段统计字符数的代码及分析. 先贴代码: #include<stdio.h> #include<string.h>//提供memset函数原型. int main() { char S[80]; int C[26],length;//一段声明,即字符数组S,整型数组C,和整型length. memset(C,0,sizeof(C));//将C清零,至于为什么不把字符数组清零,稍后有一段实验过程. for(int i=0;i<=3;i++)//循环4次,读入4行字符串. { g

29:统计字符数

29:统计字符数 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 给定一个由a-z这26个字符组成的字符串,统计其中哪个字符出现的次数最多. 输入 输入包含一行,一个字符串,长度不超过1000. 输出 输出一行,包括出现次数最多的字符和该字符出现的次数,中间以一个空格分开.如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符. 样例输入 abbccc 样例输出 c 3 来源 1744 1 #include<iostream> 2 #

统计字符(杭电1860)

/*统计字符 Problem Description 统计一个给定字符串中指定的字符出现的次数 Input 测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串.注意这里的字符串包含空格,即空格也可能是要求被统计的字符之一.当读到'#'时输入结束,相应的结果不要输出. Output 对每个测试用例,统计第1行中字符串的每个字符在第2行字符串中出现的次数,按如下格式输出: c0 n0 c1 n1 c2 n2 ... 其中ci是第1行中

Hdu 1860 统计字符

统计字符 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11529    Accepted Submission(s): 7195 Problem Description 统计一个给定字符串中指定的字符出现的次数 Input 测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字

统计字符次数

输入一个字符串(长度在100以内),统计其中数字字符出现的次数. 样例输入 Ab100cd200 样例输出 6 #include"stdio.h" int main() { char a[100]; int i; int sum=0; scanf("%s",a); for(i=0;a[i]!='\0';i++) if(a[i]>='0'&&a[i]<='9') sum++; printf("%d",sum); retu

九度OJ 1021 统计字符 (模拟)

题目1021:统计字符 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4601 解决:2705 题目描述:     统计一个给定字符串中指定的字符出现的次数. 输入:     测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串.注意这里的字符串包含空格,即空格也可能是要求被统计的字符之一.当读到'#'时输入结束,相应的结果不要输出. 输出:     对每个测试用例,统计第1行中字符串的每个字符在第2行字符串中出现的次数

(c语法百题22)统计字符

知识点: 数组的运用,结合循环 getchar()的用法 注意:对于数组a[1000],没有a=getchar()然后就把字符一个一个装进数组里面,这是错误的. 还有scanf("%s”,a);也不是正确的. 内容: 输入若干个字符(以‘#'作为结束),计算输入的字符中字母‘a'或‘A’出现的次数. 输入说明: 一行若干个字符. 输出说明: 一个整数,为a或者A字符出现次数和. 输入样例: abcdefABCDEFaaAA# 输出样例 : 6 1 #include <stdio.h>

统计字符出现次数并排序(hash)

统计字符出现次数并排序 class Hist(dict): def add(self, item, increment=1): """increase num""" self[item] = increment + self.get(item, 0) def counts(self, reverse=False): """return""" aux = [(self[k], k) for

excel - 统计字符个数综合案例

本文通过一个综合的案例来介绍excel统计字符数的一些方法和思路,供大家参考和学习. 下图是一个excel数据源截图,我们逐一讲解不同条件的统计字符数. 第一,统计A2所有的字符数,不论是汉字和数字.B2公式为:=LEN(A2),LEN函数是统计单元格字符串长度. 第二,统计A2单元格汉字字符数C2单元格公式:=LENB(A2)-LEN(A2),LENB是按字节数统计,LEN是按字符数统计,结合二者特性写的公式. 第三,统计A2单元格数字字符数D2单元格公式:=LEN(A2)*2-LENB(A2