aboutsummaryrefslogtreecommitdiff
path: root/assembler/register.s
diff options
context:
space:
mode:
Diffstat (limited to 'assembler/register.s')
-rw-r--r--assembler/register.s39
1 files changed, 39 insertions, 0 deletions
diff --git a/assembler/register.s b/assembler/register.s
new file mode 100644
index 0000000..9fbc76c
--- /dev/null
+++ b/assembler/register.s
@@ -0,0 +1,39 @@
+register:
+ PUSH {LR}
+10:
+ BL get_char
+ MOVS R1, 'R
+ CMPS R0, R1
+ BNE 10b
+20:
+ BL get_char
+ MOVS R1, '0
+ CMPS R0, R1
+ BLO 20b
+ MOVS R1, '9
+ CMPS R0, R1
+ BHI 20b
+ MOVS R1, '1
+ CMPS R0, R1
+ BNE 30f
+50:
+ BL get_char
+ BEQ 60f
+ MOVS R1, '0
+ CMPS R0, R1
+ BLO 50b
+ MOVS R1, '5
+ CMPS R0, R1
+ BHI 50b
+ ADDS R0, 10
+30:
+ SUBS R0, '0
+ MOVS R4, 0
+ ORRS R4, R0
+40:
+ BL get_char
+ BNE 40b
+ POP {PC}
+60:
+ MOVS R4, 1
+ POP {PC}