Section 04 Part 03 – The NEG Instruction


Polarity, or action and reaction, we meet in every part of nature; in darkness and light; in heat and cold; in the ebb and flow of water; in male and female; in the equation of quantity and quality; in the fluids of the animal body; in the systole an” ~Ralph Waldo Emerson






NEG – NEGate


This instruction will reverse the polarity of the destination operand, from positive to negative, or from negative to positive.






In the previous part, we were looking at signed data for positive and negative.  This instruction will allow you to change a positive number into a negative number, or vise-versa.


Now let’s take this example below:


          neg.b     d0


A byte of d0 is negated.



You’ll notice that the byte in d0 was changed from 02 to FE, basically +2 to -2.



Here, you’ll notice that the byte E4 has changed to 1C, basically -1C to +1C.


Positive to Negative, Negative to Positive, and that’s the general rule.  However, there are certain cases where negation will have no effect, for example:



Using the 00 example, 00 is neutral as far as negate is concerned.  It represents nothing, so there’s nothing to negate.  The 80 example on the other hand is in a similar predicament, but it’s harder to explain.



As you can see, 80 seems to have its own “neutral” position, being the exact opposite of 00:


... FC FD FE FF 00 01 02 03 04 ...

... 7C 7D 7E 7F 80 81 82 83 84 ...


It is of course important to remember, that 00 is still technically positive, while 80 is still technically negative.


The NEG instruction can be used on memory, directly or by using an address register in various ways:


          neg.w     $00004000

          neg.l     (a2)

          neg.w     (a2)+

          neg.b     -(a2)

          neg.w     $0C(a2)


You cannot of course use NEG on address registers directly:


          neg.l     a2




Previous Part

Main Page

Next Part