/* * Aufgabe 4_2.S * * Created on: 11.01.2021 * Author: Julia Kisela */ .data .global datastart datastart: .text /* Specify that code goes in text segment */ .code 32 /* Select ARM instruction set */ .global _startup /* Specify global symbol */ _startup: ldr sp, =0x40001000 ldr r0, =0x56 // R0 A ldr r1, =0x42 // R1 B bl bcdaddition stop: nop bal stop bcdaddition: stmfd sp!, {r4-r9, lr} mov r4, #8 // R4 Count mov r5, #0x0f // R5 Mask mov r6, #0 // R6 BCD_cy mov r7, #0 // R7 Result while: and r8, r0, r5 and r9, r1, r5 add r8, r9 add r8, r6 subs r8, #10 bmi isnegative // Negativflag, springt wenn r8 < 0 ispositive: mov r6, #1 b endif isnegative: add r8, #10 mov r6, #0 endif: add r7, r8 mov r0, r0, ror#4 mov r1, r1, ror#4 mov r7, r7, ror#4 subs r4, #1 bne while mov r2, r7 // result in r2 mov r3, r6 // Ubertrag in r3 ldmfd sp!, {r4-r9, pc} .end