找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6895|回复: 6
打印 上一主题 下一主题
收起左侧

单片机字符串怎么比较,我这有个程序,看不大懂...

[复制链接]
跳转到指定楼层
楼主
ID:46812 发表于 2012-12-22 23:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比较两个ASCII 码字符串是否相等。字符串长度在内部RAM 3FH 单元,两字符串的首地址分别为40H、50H。如果

两个字符串相等,置CY=1,否则,置CY=0。
MOV R0,#40H
MOV R1,#50H
MOV R2,#3FH
LOOP1:MOV A,@R0
CLR C
XRL A,@R1
JNZ LOOP2
INC R0
INC R1
DJNZ R2,LOOP1
SETB C
RET
LOOP2:CLR C
RET
那个字符串长度在内部RAM 3FH 单元是什么意思啊、请赐教一下啊。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:46812 发表于 2012-12-22 23:47 | 只看该作者
都来看看啊
回复

使用道具 举报

板凳
ID:7485 发表于 2012-12-23 10:04 | 只看该作者
字符串可以是若干个字符。你可以取其中n个字符进行比较,当然“n”也可以是全部。“n”保存在3fh中。进行比较的两个字符串保存的位置当然都是一个连续的内存区域,其区域的第一个地址分别在“40h”、“50h”。 这样的问题很简单,大概是许多人不屑回答吧?
[此贴子已经被作者于2012-12-23 10:05:46编辑过]

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:47220 发表于 2012-12-24 11:52 | 只看该作者
 我也看不懂,好难
回复

使用道具 举报

5#
ID:46812 发表于 2012-12-24 22:43 | 只看该作者
字符串里一个字符  就差不多一个字节了吧,那还怎么保存在一个单元里啊 ,你开玩笑呢啊 ?那你说要是把这两个字符串比较完要比较多少次啊 。
回复

使用道具 举报

6#
ID:7485 发表于 2012-12-25 10:44 | 只看该作者
楼主还是先弄懂:什么是字符?什么是字节?什么是内存单元?然后再来看程序。 内存单元一般是指一个“字节”单元,不是“位”单元。
回复

使用道具 举报

7#
ID:27770 发表于 2018-7-12 03:37 | 只看该作者
前面开始3行,就把 40H,50H,3FH,移到 R0,R1,R2 去了!  R0,R1 作为指针使用,R2作为计数器使用.
MOV A,@R0       CLR C        XRL A,@R1  这3行是把 R0 指向的存放单元内容, 通过 XRL 异或指令,与 R1 指向单元进行运算,.
异或运算遇到2个字节的内容各位相同,就会让 A = 0!  标志位 Z =1 !
JNZ 指令就是判断 Z 标志位的, 如果Z=0,说明两数不相等, 此时, R0,R1 分别加1,各指向下一个数据,继续比较.------而R2是最大比较次数,到达次数后,无论结果如何,都就会退出程序.
如果JNZ 指令判断 Z 标志位的结果=0,说明两数相等, 程序走向 LOOP2  ,结束比较.
至于 C 标志是程序退出后,方便比较而设置的,另外,如果需要, R2 也记录了比较到多少次的数字,可以通过它查看判断到.
汇编程序其实很仔细,每一步都一清二楚,多练习熟练后就会容易看明白. ----- 仅供参考!

评分

参与人数 1黑币 +70 收起 理由
admin + 70 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表