汇编:判断两个字符串是否相等(匹配)

发布者:dong125612最新更新时间:2015-05-26 来源: 51hei关键字:汇编  字符串  匹配 手机看文章 扫描二维码
随时随地手机看文章
;编程从键盘输入两个字符串到内存缓冲区,并比较两个字符串是否相同;
;如相同,输出‘match’;如不同,输出‘no match’。
;经修改的代码能够循环使用
DATAS SEGMENT
 data1    DB  100 DUP(?)
 data2    DB  100 DUP(?)
 string   DB  0DH,0AH,'$'
 tital1   DB 'Please input the first string :',0DH,0AH,'$'
 tital2   DB 'Please input the second string :',0DH,0AH,'$'
 tital3   db 'Do you want to have a try  again(if yes,input y,else input n ): ',0dh,0ah,'$'
    result1  db 'match',0dh,0ah,'$'
    result2  db 'no match',0dh,0ah,'$'  
 temp DW 0 
DATAS ENDS
CODES SEGMENT
 ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS
    MOV DS,AX
    MOV si,0
tip1:               ;输出抬头1
 LEA dx,tital1
 MOV ah,09h 
 INT 21H
first:           ;输入第一个字符串
 MOV ah,01h   ;输入字符放在AL中
 INT 21H     ;以回车作为结束符
 cmp al,0dh
 je  tip2 
 MOV data1[si],AL;保存在内存中
 INC si
 JMP first
tip2:
 LEA dx,string
 MOV AH,09H
 INT 21H
 MOV temp,si ; 保存si使得下一个字符串和它做比较
 MOV si,0         ;输出抬头2 
 LEA dx,tital2
 MOV ah,09h 
 INT 21H
second:       ;输入第二个字符串
 MOV AH,01H  ;输入字符放在AL中
 INT 21H    ;同样以回车作为结束符
 CMP AL,0DH
 je output            
 mov data2[si],al   ;保存到内存
 inc si
 jmp second
output:
 LEA dx,string
 MOV AH,09H
 INT 21H
 CMP temp,si      ;判断长度是否相等
 JNE nomatch
 MOV si,0
pipei:MOV AL,DATA1[si];判断是否每个字符都相等
 MOV AH,DATA2[si]
 INC si
 CMP AL,AH
 JNE nomatch
 CMP si,temp
 JE MATCH
 JMP pipei
MATCH: LEA DX,result1   ;不匹配就输出结论1
     MOV AH,09H
     INT 21H
     JMP EXIT
nomatch:LEA DX,result2   ;匹配就输出结论2
  MOV AH,09H
  INT 21H
EXIT:                     ;询问是否要继续进行
     lea dx,tital3
     mov ah,09h
     int 21h 
     mov ah,01h
     int 21h
     cmp al,'y'
     lea dx,string
     mov ah,09h    
     int 21h
     je start
     cmp al,'n'
     je over
     jmp exit
        
over:                ;结束
MOV AH,4CH
  INT 21H
CODES ENDS
 END START
关键字:汇编  字符串  匹配 引用地址:汇编:判断两个字符串是否相等(匹配)

上一篇:用VC++类实现快速排序(并输出过程)
下一篇:汇编:统计字符串内各种字符的数目

推荐阅读最新更新时间:2024-03-16 14:03

天津福臻推出国内首个机器人自动安装门盖及最佳匹配解决方案
2020年,哈工智能旗下子公司天津福臻推出国内首个机器人自动安装门盖及最佳匹配解决方案,在公司20年自主研发投入和行业经验积淀的基础上,重塑车身装备制造领域的领先优势。 今年,新冠疫情对汽车行业产生深刻影响。从汽车市场整体发展的态势来看,从低迷到"V"型反弹之后,汽车行业进入平稳复苏阶段。 据中国汽车工业协会(以下简称“中汽协”)数据统计,2020年4月份全国汽车产销分别完成210.2万辆和207万辆,环比增长46.6%和43.5%,同比分别增长2.3%和4.4%,月增速为今年以来的首次增长,其中销量更是结束了连续21个月的下降。中国5月份汽车销量同比增长14.5%,乘用车销量同比增长7%。6月份汽车产销持续回暖,产销分别完成23
[机器人]
一种LED太阳能路灯系统匹配设计的方法
LED发光原理为固体发光,按固体发光物理学原理,LED的光谱几乎全部集中于可见光频段,所以发光效率高达90%以上,因此,LED被誉为21世纪新光源,即将成为继白炽灯、荧光灯、高强度气体放电灯之后的第四代光源,被公认为当前十大前沿技术之一,LED光源这种新型照明光源必将会取代传统照明光源,正带动着一场新的产业革命——照明革命。针对世界金融风暴的应对,中央发改委拿出4万亿连同地方财政的支持预计将有1 O多万亿的资金投入到国家交通、扶持企业、完善基础建设上。最近国家科技部在全国启动“十城万盏”LED路灯半导体照明应用工程,在这股强劲东风下,一贯得到政府支持的半导体照明产业,将是一个大发展的契机。 1 系统简介 一套完整的LED太阳
[电源管理]
一种LED太阳能路灯系统<font color='red'>匹配</font>设计的方法
说说ARM汇编的LDR伪指令
我们知道ARM CPU中有一条被广泛使用的指令LDR,它主要是用来从存储器(确切地说是地址空间)中装载数据到通用寄存器。但不论是ARMASM还是GNU ARM AS,都提供了一条与之同名的伪指令LDR,而在实际中使用该伪指令的情况也较多,那他们有什么不同呢?下面我谈谈我的理解。 由于我使用GNU工具链,所以以下的内容都以GNU AS的ARM语法为准。 LDR伪指令的语法形式如下: LDR reg , = constant-expression 这个常量表达式 constant-expression 中可以包含Label(在ARM汇编中Label会在连接时解释为一个常数),且其中的常数前不加#符号。 范例demo.s:
[单片机]
说说ARM<font color='red'>汇编</font>的LDR伪指令
关于汇编ARM指令DCD
数据定义( Data Definition )伪指令 数据定义伪指令一般用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化。 DCD ( DCDU ) 用于分配一片连续的字存储单元并用指定的数据初始化。 3、 DCD(或DCDU) 语法格式: 标号 DCD (或 DCDU ) 表达式 DCD (或 DCDU )伪指令用于分配一片连续的字存储单元并用伪指令中指定的表达式初始化。其中,表达式可以为程序标号或数字表达式。 DCD 也可用 & 代替。 用 DCD 分配的字存储单元是字对齐的,而用 DCDU 分配的字存储单元并不严格字对齐。 使用示例: DataTest DCD 4 , 5 , 6 ;分配
[单片机]
ARM汇编进阶
接触嵌入式以来,汇编来来回回学了好几遍,感觉还是有几个地方不清楚,所以在这里做一下总结,基本的非常简单的指令就不多余介绍了,主要分享一些个人觉得虽然微不足道,但是对于理解ARM汇编有帮助的一些知识 在这里一定要说一下,刚开始学的时候步入了一个大坑,我以为我学的是ARM汇编,后来了解到了,原来是GNU汇编,怪不得我有些问题去网上找的时候迷迷糊糊的,直到最近才纠正过来 所以首先就是介绍一下这两种汇编有什么区别 ARM汇编与GNU汇编区别 ARM汇编开发,有两种开发方式,一种是使用ARM汇编,一种是使用ARM GNU汇编。 两种汇编开发,使用的汇编指令是完全一样的。 区别是宏指令,伪指令,伪操作不一样。 有上述区
[单片机]
ARM<font color='red'>汇编</font>进阶
单片机睡眠-外中断INT0 INT1唤醒(汇编+C语言程序)
跟大家分享在网上寻找好久资料之后又自己改编的一个可以睡眠的程序,可以用来进行对静态功耗有要求的项目。 单片机源程序如下: /************* 本程序功能说明 ************** 用STC的MCU的IO方式控制74HC595驱动8位数码管。 用户可以修改宏来选择时钟频率. 显示效果为: 上电后显示秒计数, 计数范围为0~255,显示在右边的3个数码管. 显示5秒后, 睡眠. 按板上的AW17 SW18唤醒, 继续计秒显示. 5秒后再睡眠. 如果MCU在准备睡眠时, AW17 SW18任一键或两键同时按着(INT0 INT1任一个或两个同时为低电平), 则MCU不睡眠, 直到
[单片机]
单片机控制LCD1602显示屏动态显示字符串
仿真电路图: 仿真实验结果: C语言程序代码: //------------------------------------------------*/ #include reg52.h //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #include intrins.h sbit RS = P2^4; //定义端口 sbit RW = P2^5; sbit EN = P2^6; #define RS_CLR RS=0 #define RS_SET RS=1 #define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0
[单片机]
单片机控制LCD1602显示屏动态显示<font color='red'>字符串</font>
ARM汇编指令详解1
RealView DeveloperSuite(RVDS)工具室ARM公司推出的新一代ARM集成开发工具(上一代为ADS)。支持所有ARM系列核,并与众多第三方实时操作系统及工具商合作简化开发流程。其包含以下组件:GUI(GraphicsUser Interface,图形用户界面)开发环境(CodeWarrior和AXD)、支持软件组成。有了这些部件,用户就可以为ARM系列的处理器编写、调试自己的程序。 Code Warrior IDE提供了一个简单通用的图形化用户界面用于管理项目。可以以ARM处理器为对象,利用CodeWarrior IDE开发C、C++和ARM汇编代码。 AXD是ADS软件中独立于CodeWarrio
[单片机]
ARM<font color='red'>汇编</font>指令详解1
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved