title: Difference between ldrsh, ldrh, strh, and strsh
body: <p>I'm not sure when to use ldrsh vs ldrsh and strh vs strsh</p>
  
  <p>I know that one is for unsigned and another is for signed, but how do we know when we need to save it signed or unsigned?</p>
  
  <p>For example, </p>
  
  <pre><code>short a[5];
  short *ptr;
  
  *(a+3) = a[1];
  ldrsh    r3, [fp, -12]
  strh     r3, [fp, -8]
  </code></pre>
  
  <p>This is a snippet of ARM assembly code from my worksheet. I just don't see why we ysed ldrsh for one instruction and strh for another. </p>