首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >位反转68HC12上的一个字节

位反转68HC12上的一个字节
EN

Stack Overflow用户
提问于 2011-02-08 01:00:41
回答 9查看 25.6K关注 0票数 9

我在上微处理器的课,我们正在用飞思卡尔CodeWarrior的汇编语言来编写68HCS12微控制器的程序。我们本周的任务是反转一个字节,因此如果字节是00000001,则输出将是10000000,或00101011到11010100。我们必须使用汇编语言,并且被告知我们可以使用旋转和移位(但不限于!)来完成这项任务。我真的不知所措,不知道该从哪里开始。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-02-08 01:19:26

如果您可以节省256字节的额外代码大小,查找表可能是在68HCS12上反转字节的最有效的方法。但我很确定这不是你的讲师所期望的。

对于“正常”的解决方案,请单独考虑数据位。旋转和平移允许您移动比特。对于第一种解决方案,隔离8位(使用逐位“与”运算),将它们移动到其目标位置(移位、旋转……),然后再次将它们组合在一起(使用逐位“或”运算)。这不是最有效或最简单的实现,但您应该首先专注于获得正确的结果--优化可以等待。

票数 6
EN

Stack Overflow用户

发布于 2011-02-08 01:11:45

提示:如果你做移位,一位被移出,一个零(可能)被移入。那个移出的比特去了哪里?您需要将其移入目标寄存器或内存地址的另一端。

我确信25年前,我可以在没有汇编程序的情况下用Z80机器码做到这一点:)

票数 8
EN

Stack Overflow用户

发布于 2011-02-08 01:08:26

将两个寄存器视为位堆栈。如果一次移动一个比特到另一个比特,会发生什么?

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4924060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档