// // demo1: division of A/B by repeated subtraction .global main, Stop, CodeEnd, DataStart, DataEnd .global A, B, Q, R .text main: mov r0, #0 movw r1, #:lower16:Q movt r1, #:upper16:Q str r0, [r1] // Q=0 movw r0, #:lower16:A movt r0, #:upper16:A ldr r0, [r0] // r0=A movw r1, #:lower16:R movt r1, #:upper16:R str r0, [r1] // R=A while: movw r0, #:lower16:R movt r0, #:upper16:R ldr r0, [r0] // r0=R movw r1, #:lower16:B movt r1, #:upper16:B ldr r1, [r1] // r1=B cmp r0, r1 blt whileEnd movw r0, #:lower16:Q movt r0, #:upper16:Q ldr r1, [r0] // r1=Q add r1,r1,#1 str r1, [r0] // Q=Q+1 movw r0, #:lower16:R movt r0, #:upper16:R ldr r1, [r0] // r1=R movw r2, #:lower16:B movt r2, #:upper16:B ldr r2, [r2] // r2=B sub r1, r1, r2 //r1=R-B str r1, [r0] // R=R-B b while whileEnd: Stop: CodeEnd: nop // ============================================================= .data DataStart: A: .4byte 37 B: .4byte 7 Q: .skip 4 // Quotient R: .skip 4 // Remainder DataEnd: .end