Thursday, May 26, 2016

8051 Program - signed 16bit subtraction

; subroutine SUB16
; 16-Bit Signed (2's Complement) Subtraction
;
; input: r1, r0 = X
; r3, r2 = Y
;
; output: r1, r0 = signed difference D = X - Y
; Carry C is set if the result (D) is out of range.
;
; alters: acc, C, OV

SUB16:anl PSW, #0E7H ;Register Bank 0
mov a, r0 ;load X low byte into acc
clr C ;clear carry flag
subb a, r2 ;subract Y low byte
mov r0, a ;put result in Z low byte
mov a, r1 ;load X high into accumulator
subb a, r3 ;subtract Y high with borrow
mov r1, a ;save result in Z high byte
mov C, OV
ret


Source: Maths Subroutines for the 8051 microcontroller, W.G.Marshall 2002



Related topics:
8051 Program - signed 16bit addition   |   8051 Program - signed 32bit addition   |   8051 Program - signed 32bit subtraction   |   8051 Program - signed 8bit multiplication   |   8051 Program - unsigned 8bit multiplication   |   8051 Program - memory subroutines   |   8051 Program - math subroutines   |   8051 Program - conversion subroutines

List of topics: 8051

No comments:

Post a Comment