<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>ColdFire/68K Microcontrollers and Processors中的主题 Re: Swapping bytes &amp; ASR/ASL</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199031#M9045</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Either use byterev (ISA_C, if available) and use the upper 16 bits of the result, or consider:&lt;/P&gt;&lt;P&gt;move.l d0,d1&lt;/P&gt;&lt;P&gt;lsl.l #8,d0&lt;/P&gt;&lt;P&gt;lsr.l #8,d1&lt;/P&gt;&lt;P&gt;add.l d1,d0&lt;/P&gt;&lt;P&gt;andi.l #$FFFF,d0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Syntax errors possible, but the idea hopefully is clear.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;HTH,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Johan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 14 Jul 2009 14:48:34 GMT</pubDate>
    <dc:creator>jbezem</dc:creator>
    <dc:date>2009-07-14T14:48:34Z</dc:date>
    <item>
      <title>Swapping bytes &amp; ASR/ASL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199029#M9043</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;On a Coldfire V1 I want to swap the bytes in a word, eg.&lt;/P&gt;&lt;P&gt;$1234&amp;nbsp;&lt;/P&gt;&lt;P&gt;to&lt;/P&gt;&lt;P&gt;$3412&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I came up with this convoluted method, is there a simpler way?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Enter with value to swap in d0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;SPAN style="font-family: 'courier new,courier';"&gt;moveq&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #0,d1&lt;BR /&gt;&amp;nbsp;lsl.l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #8,d0&lt;BR /&gt;&amp;nbsp;add.l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d0,d1&lt;BR /&gt;&amp;nbsp;andi.l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #$FFFF,d0&lt;BR /&gt;&amp;nbsp;lsr.l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #8,d1&lt;BR /&gt;&amp;nbsp;lsr.l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #8,d1&lt;BR /&gt;&amp;nbsp;add.l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d1,d0&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;One final question, with the ROR &amp;amp; ROL Opcodes gone in the CFV1 Core, is the best option to use ASR,ASL instead and monitor the CCR(C)?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ross&lt;/P&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by Bloodhound on&lt;/SPAN&gt; &lt;SPAN class="local-date"&gt;2009-07-14&lt;/SPAN&gt; &lt;SPAN class="local-time"&gt;04:57 PM&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Jul 2009 13:37:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199029#M9043</guid>
      <dc:creator>Bloodhound</dc:creator>
      <dc:date>2009-07-14T13:37:49Z</dc:date>
    </item>
    <item>
      <title>Re: Swapping bytes &amp; ASR/ASL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199030#M9044</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Use byterev instruction&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Jul 2009 14:31:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199030#M9044</guid>
      <dc:creator>kef</dc:creator>
      <dc:date>2009-07-14T14:31:39Z</dc:date>
    </item>
    <item>
      <title>Re: Swapping bytes &amp; ASR/ASL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199031#M9045</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Either use byterev (ISA_C, if available) and use the upper 16 bits of the result, or consider:&lt;/P&gt;&lt;P&gt;move.l d0,d1&lt;/P&gt;&lt;P&gt;lsl.l #8,d0&lt;/P&gt;&lt;P&gt;lsr.l #8,d1&lt;/P&gt;&lt;P&gt;add.l d1,d0&lt;/P&gt;&lt;P&gt;andi.l #$FFFF,d0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Syntax errors possible, but the idea hopefully is clear.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;HTH,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Johan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Jul 2009 14:48:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199031#M9045</guid>
      <dc:creator>jbezem</dc:creator>
      <dc:date>2009-07-14T14:48:34Z</dc:date>
    </item>
    <item>
      <title>Re: Swapping bytes &amp; ASR/ASL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199032#M9046</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Now I feel a bit silly!&lt;/P&gt;&lt;P&gt;I have been using a hardcopy CF Programmers Ref Manual from 2001, the BYTEREV command is not listed in that, I just downloaded the latest 2005 revision of that document and what do you know!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ross&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Jul 2009 15:38:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199032#M9046</guid>
      <dc:creator>Bloodhound</dc:creator>
      <dc:date>2009-07-14T15:38:38Z</dc:date>
    </item>
    <item>
      <title>Re: Swapping bytes &amp; ASR/ASL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199033#M9047</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Also consider&amp;nbsp;SWAP.W to swap words after .L-only BYTEREV, and&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; MVZ.W D0,D0&amp;nbsp;&amp;nbsp; &amp;nbsp;to clear upper word&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Jul 2009 16:35:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199033#M9047</guid>
      <dc:creator>kef</dc:creator>
      <dc:date>2009-07-14T16:35:50Z</dc:date>
    </item>
    <item>
      <title>Re: Swapping bytes &amp; ASR/ASL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199034#M9048</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;gt; I have been using a hardcopy CF Programmers Ref Manual from 2001&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;The latest version:&lt;STRONG&gt;&lt;FONT face="Helvetica-Bold" size="7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT face="Helvetica-Bold" size="7"&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;P align="left"&gt;&lt;STRONG&gt;&lt;FONT face="Helvetica-Bold" size="7"&gt;&lt;FONT size="4"&gt;ColdFire&lt;/FONT&gt;&lt;FONT face="Helvetica-Bold" size="4"&gt;®&lt;/FONT&gt; &lt;FONT face="Helvetica-Bold"&gt;&lt;FONT size="4"&gt;Family&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;STRONG&gt;&lt;FONT face="Helvetica-Bold" size="7"&gt;&lt;FONT size="4"&gt;Programmer’s Reference Manual&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;FONT face="Helvetica"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT face="Helvetica"&gt;Document Number: CFPRM&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT face="Helvetica"&gt;Rev. 3&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Helvetica"&gt;03/2005&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Helvetica"&gt;(&lt;A href="http://www.freescale.com/files/dsp/doc/ref_manual/CFPRM.pdf?fsrch=1" rel="nofollow" target="_blank"&gt;http://www.freescale.com/files/dsp/doc/ref_manual/CFPRM.pdf?fsrch=1&lt;/A&gt;)&lt;/FONT&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Jul 2009 17:31:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199034#M9048</guid>
      <dc:creator>admin</dc:creator>
      <dc:date>2009-07-14T17:31:53Z</dc:date>
    </item>
    <item>
      <title>Re: Swapping bytes &amp; ASR/ASL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199035#M9049</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A href="http://forums.freescale.com/freescale/view_profile?user.id=13529" target="_blank"&gt;&lt;SPAN&gt;jbezem&lt;/SPAN&gt;&lt;/A&gt; ,&lt;/P&gt;&lt;P&gt;your second idea of byte swapping (inside 16-bit word)&amp;nbsp;is tested Ok. I only replaced ADD instruction with OR instruction.&lt;/P&gt;&lt;P&gt;The tested code in GNU notation:&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* Let d0 = 0x1234 */&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;move.l &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d0&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT size="2"&gt;,&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d1&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* d1 = 0x1234 */&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;lsl.l #8, &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d0&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* d0 = 0x123400 */&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;lsr.l #8, &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d1&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* d1 = 0x12 */&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;or.l &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d1&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT size="2"&gt;,&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d0&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* d0 = 0x123412 */&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;andi.l #0xFFFF,&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d0&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* d0 = 0x3412 */&lt;/FONT&gt;&lt;/EM&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Jul 2009 19:05:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199035#M9049</guid>
      <dc:creator>admin</dc:creator>
      <dc:date>2009-07-14T19:05:11Z</dc:date>
    </item>
    <item>
      <title>Re: Swapping bytes &amp; ASR/ASL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199036#M9050</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Well, the final thing was how to handle what would have been the ROR / ROL opcodes they had in the CPU32. The Coldfire dropped them and only has LSL/R or ASL/R, are you supposed to keep checking the CCR(C) on every shift? I can see that would get a little messy if you are rotating 6 bits (as an example).&lt;/P&gt;&lt;P&gt;I can't imagine Freescale would have dropped the ROR / ROL opcodes unless there was an easy way to use LSL/R or ASL/R to do the same thing?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Cheers,&lt;BR /&gt;Ross&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jul 2009 05:47:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199036#M9050</guid>
      <dc:creator>Bloodhound</dc:creator>
      <dc:date>2009-07-15T05:47:22Z</dc:date>
    </item>
    <item>
      <title>Re: Swapping bytes &amp; ASR/ASL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199037#M9051</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN class="UserName"&gt;&amp;gt; are you supposed to keep checking the CCR(C) on every shift?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="UserName"&gt;&lt;A href="http://forums.freescale.com/t5/user/viewprofilepage/user-id/8587" target="_self"&gt;&lt;SPAN&gt;&lt;FONT size="3"&gt;Bloodhound&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/SPAN&gt; , the solution of &lt;A href="http://forums.freescale.com/freescale/view_profile?user.id=13529" target="_blank"&gt;&lt;SPAN&gt;jbezem&lt;/SPAN&gt;&lt;/A&gt; doesn't use CCR(C).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;gt; I can't imagine Freescale would have dropped the ROR / ROL opcodes unless there was an&lt;/P&gt;&lt;P&gt;&amp;gt; easy way to use LSL/R or ASL/R to do the same thing?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Your question is not specific enough. Could you, please, give the specific problem to resolve in the new post?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jul 2009 11:58:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199037#M9051</guid>
      <dc:creator>admin</dc:creator>
      <dc:date>2009-07-15T11:58:23Z</dc:date>
    </item>
    <item>
      <title>Re: Swapping bytes &amp; ASR/ASL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199038#M9052</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Sorry, I'll try to explain better. It didn't help that I posted two questions!&lt;/P&gt;&lt;P&gt;The solution to the byte swap is perfect, thanks, my second question was on rotation of bits.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;On the 68332 they had the opcodes ROR &amp;amp; ROL where the bits where shifted right or left.&lt;/P&gt;&lt;P&gt;For ROL the bits are rotated out the high-order bit, but the bits rotated out are passed back in to the low-order bit.&lt;/P&gt;&lt;P&gt;Eg&amp;nbsp;&lt;/P&gt;&lt;P&gt;assume %11110000&lt;/P&gt;&lt;P&gt;ROL #1&lt;/P&gt;&lt;P&gt;becomes 11100001&lt;/P&gt;&lt;P&gt;ROL #1&lt;/P&gt;&lt;P&gt;becomes 11000011&lt;/P&gt;&lt;P&gt;and so on.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Or another example:&lt;/P&gt;&lt;P&gt;assume %11110000&lt;/P&gt;&lt;P&gt;ROL #4&lt;/P&gt;&lt;P&gt;becomes %00001111&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;With the Coldfire there is no ROL or ROR opcode.&lt;/P&gt;&lt;P&gt;Doing an ASL or LSL to the above example will always result in the high order bit being lost (though it will change the C flag).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My question is, how do you rotate a byte or a word on the Coldfire so the bits are not lost?&lt;/P&gt;&lt;P&gt;I don't see any equivilent opcode to the ROR / ROL so I am assuming you need to do some checking of the CCR(C) bit after each bit is shifted.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;Ross&lt;/P&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by Bloodhound on&lt;/SPAN&gt; &lt;SPAN class="local-date"&gt;2009-07-15&lt;/SPAN&gt; &lt;SPAN class="local-time"&gt;03:14 PM&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by Bloodhound on&lt;/SPAN&gt; &lt;SPAN class="local-date"&gt;2009-07-15&lt;/SPAN&gt; &lt;SPAN class="local-time"&gt;03:16 PM&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jul 2009 12:12:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199038#M9052</guid>
      <dc:creator>Bloodhound</dc:creator>
      <dc:date>2009-07-15T12:12:37Z</dc:date>
    </item>
    <item>
      <title>Re: Swapping bytes &amp; ASR/ASL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199039#M9053</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;My solution is easily adaptable to use a different number of bits instead of 8, and&lt;/P&gt;&lt;P&gt;so create the equivalent of ROR/ROL.It may need a few more instructions, though.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;HTH,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Johan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jul 2009 13:48:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199039#M9053</guid>
      <dc:creator>jbezem</dc:creator>
      <dc:date>2009-07-15T13:48:12Z</dc:date>
    </item>
    <item>
      <title>Re: Swapping bytes &amp; ASR/ASL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199040#M9054</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Johan, but I can't see how that works.&lt;/P&gt;&lt;P&gt;Rotate instructions are circular,your example does not seem to be that, sorry, I'll 'get it' at some point.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Cheers,&lt;BR /&gt;Ross&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jul 2009 14:16:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199040#M9054</guid>
      <dc:creator>Bloodhound</dc:creator>
      <dc:date>2009-07-15T14:16:16Z</dc:date>
    </item>
    <item>
      <title>Re: Swapping bytes &amp; ASR/ASL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199041#M9055</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I see it like this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Shifting left&amp;nbsp;2&amp;nbsp;dwords pair&amp;nbsp;D0&lt;IMG alt=":smileyvery-happy:" class="emoticon emoticon-smileyvery-happy" id="smileyvery-happy" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-very-happy.gif" title="Smiley Very Happy" /&gt;1 &amp;lt;&amp;lt; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1) D2 = D1 &amp;gt;&amp;gt; (32-4)&amp;nbsp;;&amp;nbsp;&amp;nbsp; // move bits to be shifted out from D1 to D2 and shift them right&lt;/P&gt;&lt;P&gt;2) D0 = D0&amp;lt;&amp;lt; 4;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // shift left higher order reg D0&lt;/P&gt;&lt;P&gt;3) D0 |= D2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // paste bits shifted out from D1&lt;/P&gt;&lt;P&gt;4)&amp;nbsp;D1 &amp;lt;&amp;lt;= 4;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // shift left lower order reg&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Rotating left D0 &amp;lt;&amp;lt; 4&lt;/P&gt;&lt;P&gt;1) D2 = D0 &amp;gt;&amp;gt; (32-4);&amp;nbsp;&amp;nbsp;&amp;nbsp; // move bits to be shifted out to temporary register and shift them in opposite direction&lt;/P&gt;&lt;P&gt;2) D0 &amp;lt;&amp;lt;= 4;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // shift left&lt;/P&gt;&lt;P&gt;3) D0 |= D2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // paste bits from temporary register&lt;/P&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by kef on&lt;/SPAN&gt; &lt;SPAN class="local-date"&gt;2009-07-15&lt;/SPAN&gt; &lt;SPAN class="local-time"&gt;11:35 AM&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jul 2009 15:31:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199041#M9055</guid>
      <dc:creator>kef</dc:creator>
      <dc:date>2009-07-15T15:31:01Z</dc:date>
    </item>
    <item>
      <title>Re: Swapping bytes &amp; ASR/ASL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199042#M9056</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;gt; My question is, how do you rotate a byte or a word on the Coldfire so the bits are not lost?&lt;/P&gt;&lt;P&gt;&amp;gt; I don't see any equivilent opcode to the ROR / ROL so I am assuming you need to do some&lt;/P&gt;&lt;P&gt;&amp;gt; checking of the CCR(C) bit after each bit is shifted.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;gt; Rotate instructions are circular,your example does not seem to be that, sorry,&lt;/P&gt;&lt;P&gt;&amp;gt; 'll 'get it' at some point.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Let register d0 initially contains value 0xA3.&lt;/P&gt;&lt;P&gt;See the below tested code (GNU notation).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* Rotate left by one bit the least significant byte */&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;lsl.l #1, &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d0&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* d0 = 0x146 */&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;move.l &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d0&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT size="2"&gt;,&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d1&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* d1 = 0x146 */&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;lsr.l #8, &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d1&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* d1 = 0x1 */&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;or.l &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d1&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT size="2"&gt;,&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d0&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* d0 = 0x147 */&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;andi.l #0xFF, &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d0&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* d0 = 0x47 */&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Let register d0 initially contains value 0xA3.&lt;/P&gt;&lt;P&gt;See the below tested code (GNU notation).&lt;/P&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;P align="left"&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;&lt;FONT color="#008040" size="2"&gt;/* Rotate right by one bit the least significant byte */&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;EM&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;P align="left"&gt;&lt;EM&gt;&lt;FONT size="2"&gt;move.l &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d0&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT size="2"&gt;,&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d1&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* d1 = 0xA3 */&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;lsl.l #7, &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d1&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* d1 = 0x5180 */&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;lsr.l #1, &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d0&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* d0 = 0x51 */&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;or.l &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d1&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT size="2"&gt;,&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d0&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* d0 = 0x51D1 */&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;andi.l #0xFF, &lt;STRONG&gt;&lt;FONT color="#8000FF" size="2"&gt;%d0&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;/* d0 = 0xD1 */&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;EM&gt;&lt;FONT color="#008040" size="2"&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jul 2009 15:31:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199042#M9056</guid>
      <dc:creator>admin</dc:creator>
      <dc:date>2009-07-15T15:31:49Z</dc:date>
    </item>
    <item>
      <title>Re: Swapping bytes &amp; ASR/ASL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199043#M9057</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Exactly as yevgenit described. If you want to use this method for more than a byte, you may need more instructions, since the lsl/lsr immediate instructions shift 8 bits max at a time.&lt;BR /&gt;&lt;BR /&gt;HTH,&lt;BR /&gt;&lt;BR /&gt;Johan&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jul 2009 21:37:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199043#M9057</guid>
      <dc:creator>jbezem</dc:creator>
      <dc:date>2009-07-15T21:37:45Z</dc:date>
    </item>
    <item>
      <title>Re: Swapping bytes &amp; ASR/ASL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199044#M9058</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the suggestions everyone.&lt;/P&gt;&lt;P&gt;In the end I just come up with a routine that allows me to define the shift length, in this example I am manipulating 16bit values.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Before entering the rotate subroutine I load d3 with the number of bit shifts: (Rotate Right Example)&lt;/P&gt;&lt;P&gt;d0 contains the value to rotate and the final result.&lt;/P&gt;&lt;P&gt;It's annoying it uses 4 registers and lots of CPU cycles, but it will be fine for what I am trying to do.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;moveq&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #3,d3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Rotate Right 3 bits &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;bsr.w&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RotateRight&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;;------------------------------------&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;RotateRight:&lt;BR /&gt;&amp;nbsp;moveq&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #15,d2&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Shifting 15 bits at a time&lt;BR /&gt;RotateRightLoop:&lt;BR /&gt;&amp;nbsp;move.l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d0,d1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;lsl.l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d2,d1&lt;BR /&gt;&amp;nbsp;lsr.l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,d0&lt;BR /&gt;&amp;nbsp;or.l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d1,d0&lt;BR /&gt;&amp;nbsp;andi.l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #$FFFF,d0&lt;BR /&gt;&amp;nbsp;subi.l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #1,d3&lt;BR /&gt;&amp;nbsp;bne.b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RotateRightLoop&lt;BR /&gt;&amp;nbsp;rts&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If only Freescale didn't drop the ROR / ROL opcodes from the Coldfire&amp;nbsp;&lt;IMG alt=":smileysad:" class="emoticon emoticon-smileysad" id="smileysad" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-sad.gif" title="Smiley Sad" /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Cheers,&lt;BR /&gt;Ross&lt;/P&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by Bloodhound on&lt;/SPAN&gt; &lt;SPAN class="local-date"&gt;2009-07-16&lt;/SPAN&gt; &lt;SPAN class="local-time"&gt;10:11 AM&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jul 2009 07:05:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199044#M9058</guid>
      <dc:creator>Bloodhound</dc:creator>
      <dc:date>2009-07-16T07:05:52Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing ROL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199045#M9059</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;To implement ROL for a 32-bit value, how about this for a single-pass routine using 3 registers? The "trick" is using NEG to save one register.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;
input parameters:
d0=32-bit input value,32-bit return value
d1=number of bits to rotate left

move.l   d0,d2     //d2=orig d0
lsl.l    d1,d0     //d0=ls portion "rotated" to ms
neg      d1        //d1=negative orig shift amount
addi.l   #32,d1    //d1=shift right amount
lsr.l    d1,d2     //d2=ms portion "rotated" to ls
or.l     d2,d0     //d0=rotated result
rts&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;By the way, how do you get code to be nicely formatted in a post?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by tupdegrove on&lt;/SPAN&gt; &lt;SPAN class="local-date"&gt;2009-07-15&lt;/SPAN&gt; &lt;SPAN class="local-time"&gt;10:48 PM&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jul 2009 09:46:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199045#M9059</guid>
      <dc:creator>tupdegrove</dc:creator>
      <dc:date>2009-07-16T09:46:35Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing ROL</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199046#M9060</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To get the nice text format, select all your code and change it to the 'Courier New' font in the drop down list (Font Family).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;Ross&lt;/P&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by Bloodhound on&lt;/SPAN&gt; &lt;SPAN class="local-date"&gt;2009-07-16&lt;/SPAN&gt; &lt;SPAN class="local-time"&gt;01:13 PM&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jul 2009 10:13:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Swapping-bytes-ASR-ASL/m-p/199046#M9060</guid>
      <dc:creator>Bloodhound</dc:creator>
      <dc:date>2009-07-16T10:13:04Z</dc:date>
    </item>
  </channel>
</rss>

