Don't know AD stuff but those values are not within the range of a signed 16bit Word and may cause a overflow, underflow minor fault killing the instruction. Can you move up to double-word variables?
You are working with hex (aka binary) formatted numbers, not BCD numbers. To perform math on hex numbers, you need to use use the binary math commands. In this case, replace the SUB with SUBB.
The original SUB instruction was expecting a BCD number. When it saw a hex number it freaked out and froze like a deer in the headlights and did nothing.
Don't know AD stuff but those values are not within the range of a signed 16bit Word and may cause a overflow, underflow minor fault killing the instruction. Can you move up to double-word variables?
AD really doesn't have a signed 16bit data type, at least not a native one. You can always write the program to interpret the register as a signed word, but the instructions don't handle it for you. If you want native signed numbers, you need to jump to reals.