<?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: MCF51JM128 Assembly Questions</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF51JM128-Assembly-Questions/m-p/213487#M10656</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Regarding disassembly window only:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;In bra.s, ".s" probably stands for signed, I guess.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Asterisk *&amp;nbsp;means not&amp;nbsp;current PC, but an address of a label to the left of instruction. Just like we can use it in motorola assemblers:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; bra&amp;nbsp; *+12&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;and&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;label:&amp;nbsp; bra&amp;nbsp; label+12&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;are the same.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 03 Jan 2009 15:51:55 GMT</pubDate>
    <dc:creator>kef</dc:creator>
    <dc:date>2009-01-03T15:51:55Z</dc:date>
    <item>
      <title>MCF51JM128 Assembly Questions</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF51JM128-Assembly-Questions/m-p/213486#M10655</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;Hi everyone,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I've been trying to analyse some routines in&amp;nbsp;a program&amp;nbsp;written in C language with the Disassemble option in CW for Microcontrollers V6.2 (the trial version),&amp;nbsp;to see the assembly instructions, but I've got some doubts:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;1. The .dump window for my source file has this line:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;;Address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ObjectCode&amp;nbsp; Label&amp;nbsp; Opcode&amp;nbsp;&amp;nbsp; Operands&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; Comment&lt;/DIV&gt;&lt;DIV&gt;0x0000000E&amp;nbsp; 0x600A&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;bra.s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *+12&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; ; 0x0000001a&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;From which I understand that will set the Program Counter to the address of the&amp;nbsp;instruction + 2 + 12 (0x00000E + 2 + 12 = 0x00001C) and not to 0x00001A as the comment says.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;But if we look at the machine code, it is 0x600A, which means that the displacement is 0x0A, a 10 in decimal, and that would set the PC to 0x00001A as it suposeddly must do. So I want to know why the displacement at the Object Code is different to that of the assembly operand.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Here is the description for BRA, as it says in the Coldfire Family Programmer Reference Manual:&lt;/DIV&gt;&lt;DIV&gt;"&lt;STRONG&gt;&lt;SPAN style="font-family: TimesNewRoman,Bold;"&gt;Description:&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN style="font-family: TimesNewRoman;"&gt;Program execution continues at location (PC) + displacement. Branches can be forward with a positive displacement, or backward with a negative displacement. &lt;STRONG style=": ; color: #000000;"&gt;The PC contains the address of the instruction word of the BRA instruction plus two&lt;/STRONG&gt;.&lt;/SPAN&gt;"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Probably I'm misunderstanding something, so please explain me why this happens. Besides, I don't know what that .s in the instruction stands for (I only knew there was .b, .w and .l) and there may lie the answer, but I can't find what it means even in the Coldfire Reference.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;2.&amp;nbsp; On the same disassembly there is this line:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;;Address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ObjectCode&amp;nbsp; Label&amp;nbsp; Opcode&amp;nbsp;&amp;nbsp; Operands&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; Comment&lt;/DIV&gt;&lt;DIV&gt;0x0000001C&amp;nbsp; 0x63F2&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;bls.s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*-12&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; ; 0x00000010&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Which would make the program counter point after the previous command I showed you. The function of this line is very clear, but again, I don't know what the .s is for and also I can't find the instruction BLS neither in the Colfire RM, nor in the MCFJM51 RM. So I would like to know what they mean.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;3. I would like you to provide me some references to understand .dump disassembly&amp;nbsp;files better, as there are many sections I don't understand and they seem to have very useful information.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks in advance.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 03 Jan 2009 05:02:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF51JM128-Assembly-Questions/m-p/213486#M10655</guid>
      <dc:creator>RRVIZ</dc:creator>
      <dc:date>2009-01-03T05:02:28Z</dc:date>
    </item>
    <item>
      <title>Re: MCF51JM128 Assembly Questions</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF51JM128-Assembly-Questions/m-p/213487#M10656</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Regarding disassembly window only:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;In bra.s, ".s" probably stands for signed, I guess.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Asterisk *&amp;nbsp;means not&amp;nbsp;current PC, but an address of a label to the left of instruction. Just like we can use it in motorola assemblers:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; bra&amp;nbsp; *+12&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;and&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;label:&amp;nbsp; bra&amp;nbsp; label+12&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;are the same.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 03 Jan 2009 15:51:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF51JM128-Assembly-Questions/m-p/213487#M10656</guid>
      <dc:creator>kef</dc:creator>
      <dc:date>2009-01-03T15:51:55Z</dc:date>
    </item>
  </channel>
</rss>

