'Writing an LC3 Subtraction subroutine to subtract R3 from R2

I'm just starting to learn LC3. If we want to write a Subtraction subroutine which subtracts the value stored in some register, lets say we want to subtract the value stored in R3 from R2 meaning that R2 - R3 and store the value back into R3. How is this done using LC3 subroutines?

SUBT    NOT R3, R3 ; Find the complement of R3
        ADD R4, R3, #1 ; Getting 2's complement, R4 = -R3
        ADD R3, R2, R4 ; R3 -> R2 + R4 = R2 - R3
        RET

So far I have this.

expected output:

009-001=008 
004-004=000 
008-002=006 
003-002=001 
001-000=001 
005-001=004 
009-003=006 
008-004=004 
000-000=000 
002-001=001 

Output received:

009-001=001
004-004=004
008-002=002
003-002=002
001-000=000
005-001=001
009-003=003
008-004=004
000-000=000
002-001=001

Call made:

BRz     C_MINUS
ADD     R0, R4, #-2
C_MINUS JSR     SUBT            ; '-'
BRnzp   C_end


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source