This is a project I worked on long ago to help students with their course. Click the “Notes” and see the bottom right card to learn more about how to use this fully functionaly Cortex-M0 simulator and assembler written in vanilla Javascript.

Cortex-M0 Simulator
.cpu cortex-m0
.thumb
.syntax unified
.fpu softvfp

loadaddr:
    push {r4,r5,r6,r7,lr}
    movs r4,#0x44
    movs r5,#0x55
    movs r6,#0x66
    movs r7,#0x77
    ldr r0,=xvar
    pop {r4,r5,r6,r7,pc}

.data
    .align 4
xvar:
    .word 0x12345678 
    .space 4

.text

.global main
main:
    nop
    bl loadaddr
    ldr r1,[r0,#0]
    adds r2,r1,#5
    str r2,[r0,#4]
    adds r0,r0,#1   // Change r0 to an odd address, so...
    ldr r2,[r0,#0]  // ...this will HardFault.

      
.cpu cortex-m0
.thumb
.syntax unified
.fpu softvfp

.org 0x08000000 
startup:
    bl main
loop:
    b loop
Register Value
R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
SP
LR
PC
APSR
Output Console