Advertisement
Guest User

Untitled

a guest
Apr 11th, 2018
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 0.70 KB | None | 0 0
  1. ;r0        = value to check
  2. ;r1        = offset for ldr/str
  3. ;r2        = counting for loops/conditions
  4. ;r3        = tmp register for shifting
  5. ;r4        = result
  6. main:
  7.     mov r0, #0x44
  8.     mov r1, #0x1000
  9.     mov r2, #0
  10.     mov r3, #0
  11. setup:
  12.     cmp r2, #4 ;just write ABCD to 0x1000 for test
  13.     beq clear
  14.     strb r0, [r1, r2]
  15.     sub r0, r0, #1
  16.     add r2, r2, #1
  17.     b        setup
  18. clear:
  19.     eor r0, r0, r0
  20.     eor r1, r1, r1
  21.     eor r1, r1, r1
  22.     eor r2, r2, r2
  23.     b hex
  24. hex:
  25.     mov r1, #0x1000
  26.     ldrb r0, [r1, r2]
  27.     cmp r0, #0x67
  28.     bgt zero
  29.     cmp r0, #0x3A
  30.     addgt r0, r0, #9
  31.     and r0, r0, #0xF
  32.     b shift
  33. zero:
  34.     mov r0, #0
  35.     b shift
  36. shift:
  37.     lsl r0, r0, r3
  38.     orr r4, r4, r0
  39.     add r2, r2, #1
  40.     add r3, r3, #4
  41.     cmp r2, #4
  42.     bne hex
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement