doh*_*gen 7 assembly reverse codewarrior bit-manipulation 68hc12
我在微处理器类中,我们在飞思卡尔CodeWarrior中使用汇编语言来编程68HCS12微控制器.本周我们的任务是反转一个字节,所以如果字节是00000001,输出将是10000000,或者是00101011到11010100.我们必须使用汇编语言,并被告知我们可以使用旋转和移位(但不限于! )完成这项任务.我真的不知道应该从哪里开始.
提示:如果你做了一个移位,一个位被移出,一个零(可能)被移入.那里移出的位去了哪里?您需要将其移入目标寄存器或存储器地址的另一端.
我敢肯定25年前我可以在没有汇编程序的Z80机器代码中做到这一点:)
如果你可以节省256字节的额外代码大小,那么查找表可能是在68HCS12上反转字节的最有效方法.但我很确定这不是教练期待的.
对于"正常"解决方案,请分别考虑数据位.旋转和移位允许您移动位.对于第一种解决方案,隔离8位(按位"和"操作),将它们移动到目标位置(移位,旋转......),然后再将它们组合在一起(使用按位"或"操作).这不是最有效或最简单的实现,但您应该首先集中精力获得正确的结果 - 优化可以等待.