汇编语言怎么实现字符串的判断呢

hollandjzy 2008-12-08 09:10:20
如题:汇编语言怎么实现字符串的判断呢
用PIC汇编写一个判断函数,看是不是需要的字符串 ,各位高手 有没有好的方法 推荐下
...全文
475 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yitanxiaoyao120 2008-12-08
  • 打赏
  • 举报
回复
去pic论坛看看,应该有人会。www.pic16.com
huangpeng8612 2008-12-08
  • 打赏
  • 举报
回复
CPU从指令级对字符串的处理不支持外设字符串的操作,只有内存中的字符串才有串指令加速执行.从外设读数据比较的话只能自己一个个地比较了,完全由自己控制,不能使用硬件支持字符串的特性了.最好的办法是先把字符串读到内存,再操作.但是如果你的外设速度很慢的话最好读一个自己比较一个,一不相等就不用再读了.
对于字符型外设来说一般是一个个读,一个个比较,自己控制.而对于块设备来说,最好一次读入内存,用CPU提供的串操作指令比较.
authenticationf 2008-12-08
  • 打赏
  • 举报
回复
ding
filec75 2008-12-08
  • 打赏
  • 举报
回复
ding
hollandjzy 2008-12-08
  • 打赏
  • 举报
回复
我先在是从I2C口读过来的数据,考虑到连续性,我应该怎么判断呢
huangpeng8612 2008-12-08
  • 打赏
  • 举报
回复


.type area @function
strcmp: //假设参数为两个字符串的地址
push %esi
push %edi

movl 8(%esp), %edi
movl 12(%esp), %esi

push %edi
call strlen //假设有此函数来获取给定字符串的长度
add $4, %esp
movl %eax, %ebx
push %esi
call strlen
add $4, %esp

cmpl %eax, %ebx
jnz NOT_EQUAL //如果两个字符串长度不同,肯定不会相等

movl %eax, %ecx //将长度放到计数器中
cld //设置字符串为从低地址到高地址存放
repe cmpsb //只要当前字符相同,则比较下一个,除非所有字符都已经比较完.
jne NOT_EQUAL //如果上面循环是因为两个字符不同导致循环结束,则说明两个字符串不等
EQUAL:
//两个字符串相等,自己处理吧
NOT_EQUAL:
//两个字符串不等,自己处理吧

//最后别忘记了RET


pop %edi
pop %esi
ret

hollandjzy 2008-12-08
  • 打赏
  • 举报
回复
没人回啊,自己顶一下 我可以加分的

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧