社区
汇编语言
帖子详情
【高分】汇编语言如何获取寄存器连续1的位数
hucailai
2019-02-03 10:59:19
例如寄存器 EAX:
从两个方向,高位和低位
MOV EAX , 1111000100011B
从高位得到4,从低位得到2
求高手支招,考虑性能最优,400分送上。
...全文
175
9
打赏
收藏
【高分】汇编语言如何获取寄存器连续1的位数
例如寄存器 EAX: 从两个方向,高位和低位 MOV EAX , 1111000100011B 从高位得到4,从低位得到2 求高手支招,考虑性能最优,400分送上。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hucailai
2019-02-03
打赏
举报
回复
400分送上,见着有份,100%结贴。
hucailai
2019-02-03
打赏
举报
回复
结贴了,多谢
日立奔腾浪潮微软松下联想
2019-02-03
打赏
举报
回复
引用 7 楼 hucailai 的回复:
左起第一个0位置,那前面的不就正好是全部连续的1吗?
对你的例子:
MOV EAX , 1111000100011B
数据实际是 0000 0000 0000 0000 0001 1110 0010 0011
hucailai
2019-02-03
打赏
举报
回复
左起第一个0位置,那前面的不就正好是全部连续的1吗?
日立奔腾浪潮微软松下联想
2019-02-03
打赏
举报
回复
#2已经是很高效的了,除非有专用指令(popcnt是求1的数量,但不是连续的1),否则不可能几条指令算出来
日立奔腾浪潮微软松下联想
2019-02-03
打赏
举报
回复
不可以,你这样是取左起第一个0的位置
hucailai
2019-02-03
打赏
举报
回复
是不是可以这样 XOR EAX,0xFFFFFFFF ;异或 BSR EAX,EAX ;位扫描 两条指令搞定。
hucailai
2019-02-03
打赏
举报
回复
用到了循环感觉效率不高,还有更好的吗?
日立奔腾浪潮微软松下联想
2019-02-03
打赏
举报
回复
; 求最长连续位1
; input: unsigned integer in eax
; output: result in eax
CC1 proc
mov ecx, eax
mov edx, eax
xor eax, eax
@@loop:
jecxz @@exit
shl ecx, 1
and edx, ecx
inc eax
mov ecx, edx
jmp @@loop
@@exit:
ret
CC1 endp
单片机汇编9(1).ppt
单片机汇编9(1).ppt
广工微机复习
广东工业大学微机课程复习资料,提高考试重点把握,考取
高分
不是问题
2017年省电大计算机应用基础网考试题与参考答案.pdf
2017年省电大计算机应用基础网考试题与参考答案.pdf
2012年计算机网考_电大老师悄悄给的.pdf
2012年计算机网考_电大老师悄悄给的.pdf
XL2000 单片机综合实验仪说明书
XL2000 单片机综合仿真实验仪是深圳市学林电子有限公司(www.51c51.com www.8951.com)综合多年 经验开发的多功能 8051 单片机平台(兼容 AVR/PIC 单片机的部份烧写实验功能) 。是在我公司广受好评的 XL1000 试验仪的基础上升级而成。集成常用的单片机外围硬件,ISP 下载线,仿真器,实验板,编程器功能 于一身,工艺技术资料在同行业遥遥领先.
汇编语言
21,497
社区成员
41,618
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章