博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[汇编] 统计字符
阅读量:6463 次
发布时间:2019-06-23

本文共 2313 字,大约阅读时间需要 7 分钟。

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  25511     char    db  012     num     db  013 ends14 15 stack segment16     dw      100     dup(?)  17     tos     label   word     18 ends19 20 code segment    21 main    proc    far22     assume  cs:code,ds:data,ss:stack23 start:  24     mov     ax,stack    ;预处理25     mov     ss,ax26     mov     sp,offset tos27     push    ds28     sub     ax,ax29     mov     ax,data30     mov     ds,ax31 begin:32     mov     bx,0        ;table数组的指针33     mov     cx,255      ;下面loop循环的次数34 input:                  ;循环输入字符串,遇到35     mov     ah,136     int     21h37     cmp     al,0DH      ;输入换行跳出循环38     jz      set_n39     mov     table[bx],al40     inc     bx          ;加1不影响cf41     loop    input42 set_n:                  ;循环结束后把数组大小bx给n,然后等待字符输入43     mov     n,bx44     call    disp_crlf45 input_char:46     mov     ah,1        ;从键盘接收一个字符的DOS功能调用al等于输入内容47     int     21h   48     cmp     al,0DH      ;如果输入为换行就停止49     jz      exit50     mov     char,al     ;将输入内容给char51     call    search      ;调用统计函数52     mov     dl,'-'      ;显示一个分隔符53     mov     ah,02h54     int     21h55     mov     dl,num      ;计算的结果放在num中,传入dl中56     add     dl,30H      ;把dl转换为ascial码并输出57     cmp     dl,39H58     jbe     next59     add     dl,07H        60 next: 61     mov     ah,262     int     21H63     call    disp_crlf64     jmp     short   input_char65 exit:   66     ret  67 main endp68 ;---------------------------------69 search  proc    near70     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     rotate177     inc     num78 rotate1:79     inc     si80     loop    rotate81     ret82 search  endp83 ;--------------------------------84 disp_crlf   proc    near;换行子函数   85     mov     dl,0DH86     mov     ah,02H87     int     21H 88     mov     dl,0AH89     mov     ah,02H90     int     21H 91     ret92 disp_crlf   endp93 ;-------------------------------94 code    ends95 end     start96

 

 

转载地址:http://pkhzo.baihongyu.com/

你可能感兴趣的文章
正则表达式介绍
查看>>
初识Scala反射
查看>>
第三十九天
查看>>
Redis详解
查看>>
论程序员加班的害处
查看>>
codeblocks快捷键
查看>>
基于HTML5的WebGL设计汉诺塔3D游戏
查看>>
WPF资料链接
查看>>
过滤DataTable表中的重复数据
查看>>
再次更新
查看>>
mysql的数据类型int、bigint、smallint 和 tinyint取值范围
查看>>
利用网易获取所有股票数据
查看>>
移动铁通宽带上网设置教程
查看>>
Python算法(含源代码下载)
查看>>
利用Windows自带的Certutil查看文件MD5
查看>>
通过原生js添加div和css
查看>>
简单的导出表格和将表格下载到桌面上。
查看>>
《ArcGIS Engine+C#实例开发教程》第一讲桌面GIS应用程序框架的建立
查看>>
查询指定名称的文件
查看>>
Python 嵌套列表解析
查看>>