CT-Lab_5_ArithmOperations/arith_operations/app/arithm.s

86 lines
2.6 KiB
ArmAsm

; ------------------------------------------------------------------
; -- _____ ______ _____ -
; -- |_ _| | ____|/ ____| -
; -- | | _ __ | |__ | (___ Institute of Embedded Systems -
; -- | | | '_ \| __| \___ \ Zurich University of -
; -- _| |_| | | | |____ ____) | Applied Sciences -
; -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
; ------------------------------------------------------------------
; --
; -- arithm.s
; --
; -- CT1 P05 Summe und Differenz
; --
; -- $Id: arithm.s 549 2014-09-01 13:00:11Z muln $
; ------------------------------------------------------------------
;Directives
PRESERVE8
THUMB
; ------------------------------------------------------------------
; -- myCode
; ------------------------------------------------------------------
AREA MyCode, CODE, READONLY
main PROC
EXPORT main
user_prog
; ------------------------------------------------------------------
; -- Increment/Decrement with ADDS and SUBS
MOVS R1, #0
ADDS R1, R1, #1
ADDS R1, R1, #1
SUBS R1, R1, #1
SUBS R1, R1, #1
SUBS R1, R1, #1
SUBS R1, R1, #1
SUBS R1, R1, #1
ADDS R1, R1, #1
ADDS R1, R1, #1
ADDS R1, R1, #1
ADDS R1, R1, #1
ADDS R1, R1, #1
; ------------------------------------------------------------------
; -- ADDS and SUBS (negative, positive, overflow)
LDR R0, =0x6a000000
LDR R1, =0x2efffffe
ADDS R1, R1, R1
ADDS R0, R0, R1
ADDS R0, R0, R1
LDR R0, =0xa1000000
LDR R1, =0x5efffffe
SUBS R0, R0, R1
SUBS R0, R0, R1
; ------------------------------------------------------------------
; -- ADDS and RSBS vs. SUBS (compare R0 and R2)
LDR R0, =0x4a000000
LDR R1, =0x2efffffe
MOV R2, R0
SUBS R0, R0, R1
RSBS R1, R1, #0
ADDS R2, R2, R1
; ------------------------------------------------------------------
; -- MUL flags and cut-off if result needs more than 32 bits
LDR R0, =0x0000e200
LDR R1, =0x00002201
MULS R0, R1, R0
LDR R1, =0x00000f20
MULS R0, R1, R0
MULS R0, R1, R0
B user_prog
ALIGN
; ------------------------------------------------------------------
; End of code
; ------------------------------------------------------------------
ENDP
END