; subroutine SUB32
; 32-Bit Signed (2's Complement) subtraction
;
; input: r3, r2, r1, r0 = X
; r7, r6, r5, r4 = Y
;
; output: r3, r2, r1, r0 = signed difference D = X - Y
; Carry C is set if the result (D) is out of range.
;
; alters: acc, C, OV
SUB32: anl PSW, #0E7H ;Register Bank 0
mov a, r0 ;load X low byte into acc
clr C ;clear carry flag
subb a, r4 ;subract Y low byte
mov r0, a ;put result in Z low byte
mov a, r1 ;repeat with other bytes...
subb a, r5
mov r1, a
mov a, r2
subb a, r6
mov r2, a
mov a, r3
subb a, r7
mov r3, a
mov C, OV ;set C if external borrow
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 16bit subtraction | 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