汇编语言(二十八)之统计单词

输入一行字符串,统计单词SUN出现的个数

程序运行:

 

代码:


datas segmentENG_max_length     db  0ffhENG_length         db  0ENG                db 100h dup(?)eng_len            dw 0SUN       db 'SUN'sun_len   dw $-SUNcount     dw 0 input     db 'input a line:$'output    db 0DH,0AH,'SUN count:$'
datas endsstacks segment stackdb  100h dup(?)stacks endscodes segmentassume cs:codes,ds:datas,ss:stacks
main   proc  far
start:push dsmov ax,0hpush axmov ax,datas          ;初始化dsmov ds,axlea dx,inputmov ah,9int 21hlea dx,ENG_max_lengthmov ah,10 int 21hmov al,ENG_lengthxor ah,ah mov eng_len,ax	   xor si,sixor di,dimov bp,sun_len           ;取查找单词的长度dec bp                   ;长度减1,指向SUN最后一单元mov cx,eng_len           ;取ENG的长度mov dx,0                 ;记录查找SUN出现的次数s:mov al,ENG[si]cmp SUN[di],al           ;比较SUN[di]与aljnz not_same	             ;若不相等,跳转cmp di,bp                ;判断di是否指向SUN最后一单元jz match                  ;若是,则进行单词左右匹配inc di                    ;若不是,di加1jmp next                  ;跳转至下一次循环match:                      ;单词左右匹配mov di,si                 ;取单词的左边索引sub di,sun_len	          cmp di,0                   ;判断左边索引是否小于0jl  judge_right            ;若小于0,则判断单词右边索引mov bl,ENG[di]                and bl,11011111b           ;将单词左边的字母转成大写cmp byte ptr bl,'A'        ;判断该字母是否小于'A'jb judge_right              ;若小于'A',则判断单词右边索引cmp byte ptr bl,'Z'         ;判断该字母是否大于'Z'ja judge_right              ;若大于'Z',则判断单词右边索引jmp not_same                 ;否则跳转至不匹配judge_right:                   ;单词的右匹配mov di,si                   ;取单词的右匹配索引inc di                       cmp di,eng_len               ;判断右匹配索引是否越界jz same	                     ;若越界,则匹配mov bl,ENG[di]                  ;右匹配的字母转换成大写and bl,11011111b              cmp byte ptr bl,'A'          ;判断该字母是否小于'A'jb  same                      ;若小于'A',则匹配cmp byte ptr bl,'Z'          ;判断该字母是否大于'Z'ja same                       ;若大于'Z',则匹配jmp not_same                  ;否则不匹配same:                        inc dx                        ;匹配,则计算器加1mov di,0                      ;di索引置0jmp next	                      ;跳转置下一次循环not_same:         xor di,di                     ;di置0next:inc si loop smov count,dxlea dx,outputmov ah,9int 21hmov ax,countcall decimalretmain endp
decimal proc near  uses ax bx cx dx mov bx,10 mov cx,0 de:xor dx,dx div bx push dx inc cx cmp ax,0jnz de de1:pop dxadd dl,30hmov ah,2int 21h loop de1retdecimal endp	
codes endsend main

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这可能就是写代码的乐趣吧,你,也一定会爱上写代码的!

“大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。”现在是:2021年10月23日22:02:41。于我来说,最感兴趣的莫过于上课和写代码了。最近一下在做一个项目,可能是前期数据库设计的不是很好,导…

汇编语言(二十九)之数值的二进制和十进制

给定一个数,输出该数的二进制和十进制数 程序运行: 代码: datas segmentVAL1 dw 156datas endsstacks segment stackdb 100h dup(?)stacks endscodes segmentassume cs:codes,ds:datas,ss:stacks BANDO proc far start:push dsmov ax,0…

ASP.NET Core MVC – Tag Helper 组件

ASP.NET Core Tag Helpers系列目录,这是第五篇,共五篇: ASP.NET Core MVC – Tag Helpers 介绍ASP.NET Core MVC – Caching Tag HelpersASP.NET Core MVC – Form Tag HelpersASP.NET Core MVC – 自定义 Tag HelpersASP.NET Core MVC – T…

vue+elementui中,el-select多选下拉列表中,如何同时获取:value和:label的值?

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 项目场景: 正如题目所说,今天在项目过程中遇到了个需求,因为需要在前台展示运动员的名称,但是运动员的编号在别的地方还需要使用&#xff…

C#使用Xamarin开发可移植移动应用进阶篇(9.混淆代码,防止反编译)

嗯,既然是客户端应用,自然而然就需要一些防止源码泄漏的手段.通过C#编写的APP,完全是可以直接解压APK,然后得到里面的DLL然后进行反编译的.. 如下图: 嗯..这样就会造成代码泄漏.. 下面就介绍一下,如何使用VS自带的Dotfuscator来进行混淆代码. 1.安装Dotfuscator 打开VS2017…

想绝交,就借钱!

“大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。”今天谈论的话题只有两个字,就是“钱”之前在原来单位工作的时候,老板就给我说,我弟弟的工资让我帮忙管着,不然到用的时候拿不出来&#…

luoguSP1805,POJ2559-Largest Rectangle in a Histogram【单调栈】

正题 POJ题目链接:http://poj.org/problem?id2559 luogu评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidSP1805 大意 有n个高度不同,宽度为1的长方形排列在一起。找到一个长方形使其面积最大 解题思路 我们先考虑单调递增的情况 …

Orleans解决并发之痛(一):单线程

程序在运行过程中有时会莫名其妙出现代码的某些约束或者执行结果和理想状况不一样,正常逻辑怎么会出现这样的情况?到底发生了什么?好像见了鬼!瞬间好无助。 谁来救救我 大多数出现正常逻辑很难解释的时候,我们可能会想…

你们考试,我们都有点紧张呢…

“大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。”考试计划都好久好久了,一直没有时间,终于在今天考了一次。去监考的时候王老师还说,我都有点紧张呢,我说我也是,哈哈哈~上午几…

汇编语言(三十一)之数字字符串加密与解密

输入一串数字,然后进行加密解密输出 程序运行: 代码: datas segmentline_max_len db 0ffh line db 0, 100h dup(?)linesecret db 0, 100h dup(?)linedesecret db 0, 100h dup(?)secret …

ASP.NET Core 运行原理解剖[1]:Hosting

SP.NET Core 是新一代的 ASP.NET,第一次出现时代号为 ASP.NET vNext,后来命名为ASP.NET 5,随着它的完善与成熟,最终命名为 ASP.NET Core,表明它不是 ASP.NET 的升级,而是一个重新设计的Web开发框架。而它一…

公众号文章

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 常用的几个sql整理 1.按照日期统计今天的客流信息。 SELECT * FROM base_disanfang WHERE DATE_FORMAT(create_time,%Y-%m-%d) DATE_FORMAT(NOW(),%Y-%m-%d) 其中base_disanfang为表名…

2017(深圳) .NET技术分享交流会 第二期,将有网络直播

2017 .NET技术分享交流会第一期已在5月13日成功举办,但是有同学反馈哪个地方有点偏,又过去了3个月,这期间一直没找到合适的地方举办活动,一直在南山科技园寻找经济适合的场地,终于找到一个安静,风景好的深圳…

整理几个常用的sql和其他代码

“大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。”常用的几个sql整理1.按照日期统计今天的客流信息。SELECT * FROM base_disanfang WHERE DATE_FORMAT(create_time,%Y-%m-%d) DATE_FORMAT(NOW(),%Y-%m-%d)其中base_disanfang为表名&…

汇编语言(三十三)之四进制转十进制

输入四进制的数,转为十进制输出 程序运行: 代码: datas segmentN_string_max_length db 0ffhN_string db 0, 100h dup(?)N dw 0,0 sum dd 0 input db inp…

Orleans解决并发之痛(二):Grain状态

Grains是Orleans应用程序的构建块,它们是彼此孤立的原子单位,分布的,持久的, 一个典型的Grain是有状态和行为的一个单实例,每个Grain实例的在单线程内执行,Grain之间共享数据通过消息传递,Grain…

汇编语言(三十四)之输出中文

输出中文 程序运行: 代码: daones segmentfull_name db 0,1,2,3,4,5 full_name_length dw $-full_name start_char db 0 change_char_count dw 6color db 1 x dw 40 y …

vue使用element ui实现下拉列表分页的功能!!!

“大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。”前几天做了个功能,需求是使用利用element ui如何给下拉列表分页,经过网上查找,自己摸索,已经完成,今天来记录一下吧。实现的…

ASP.NET Core 运行原理解剖[2]:Hosting补充之配置介绍

在上一章ASP.NET Core 运行原理解剖[1]:Hosting中,我们介绍了 ASP.NET Core 的启动过程,主要是对 WebHost 源码的探索。而本文则是对上文的一个补充,更加偏向于实战,详细的介绍一下我们在实际开发中需要对 Hosting 做一些配置时经…

汇编语言(三十五)之输入字符串以$结束然后输出字母个数

输入字符串以$结束然后输出字母个数 程序运行: 代码: datas segment buff db 100h dup(?)letter_count dw 0nextline db 0dh,0ah,$datas ends codes segment assume cs:codes,ds:datas main proc far push dsmov ax,0push ax mov ax,datasmov ds,ax…