Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- param:
- r0: byte in range 0x00-0x0F
- result:
- r0: ascii
- */
- NibbleToAscii:
- and r0,#0xF
- add r0,#'0'
- cmp r0,#'9'
- movls pc,lr
- add r0,#7
- mov pc,lr
- /*
- param:
- r0: 8bit unsigned int
- r1: x
- r2: y
- result:
- r0: x
- r1: y
- */
- .globl PrintU8
- PrintU8:
- push {r4,r5,r6,lr}
- n .req r4
- x .req r5
- y .req r6
- mov n,r0
- lsr r0,n,#4
- mov x,r1
- mov y,r2
- bl NibbleToAscii
- bl DrawCharacter
- add x,r0
- mov r0,n
- mov r1,x
- mov r2,y
- bl NibbleToAscii
- bl DrawCharacter
- add r0,x,r0
- mov r1,y
- pop {r4,r5,r6,pc}
- .unreq n
- .unreq x
- .unreq y
- /*
- param:
- r0: 32bit unsigned int
- r1: x
- r2: y
- result:
- r0: x
- r1: y
- */
- .globl PrintU32
- PrintU32:
- push {r4,r5,lr}
- n .req r4
- mask .req r5
- mov n,r0
- mov mask,#0xFF
- lsl mask,#24
- and r0,n,mask
- lsr r0,#24
- bl PrintU8
- mov r2,r1
- mov r1,r0
- lsr mask,#8
- and r0,n,mask
- lsr r0,#16
- bl PrintU8
- mov r2,r1
- mov r1,r0
- lsr mask,#8
- and r0,n,mask
- lsr r0,#8
- bl PrintU8
- mov r2,r1
- mov r1,r0
- lsr mask,#8
- and r0,n,mask
- bl PrintU8
- pop {r4,r5,pc}
- .unreq mask
- .unreq n
- /*
- param:
- r0: addr aligned to 16byte boundary
- r1: size
- r2: x
- r3: y
- return:
- r0: x
- r1: y
- */
- .globl PrintMemory16
- PrintMemory16:
- push {r4,r5,r6,r7,r8,lr}
- addr .req r4
- size .req r5
- x0 .req r6
- x .req r7
- y .req r8
- mvn r4,#0xFF
- and addr,r0,r4
- mov size,r1
- mov x0,r2
- mov y,r3
- printMemLineLoop$:
- mov x,x0
- mov r0,addr
- mov r1,x
- mov r2,y
- bl PrintU32
- mov x,r0
- mov y,r1
- mov r0,#':'
- mov r1,x
- mov r2,y
- bl DrawCharacter
- add x,r0
- mov r0,#' '
- mov r1,x
- mov r2,y
- bl DrawCharacter
- add x,r0
- printMemLoop$:
- ldrb r0,[addr]
- mov r1,x
- mov r2,y
- bl PrintU8
- mov x,r0
- mov r0,#' '
- mov r1,x
- mov r2,y
- bl DrawCharacter
- add x,r0
- subs size,#1
- teq size,#0
- beq printMemLoopEnd$
- adds addr,#1
- tst addr,#0xF
- bne printMemLoop$
- add y,r1
- b printMemLineLoop$
- printMemLoopEnd$:
- mov r0,x0
- add r1,y
- pop {r4,r5,r6,r7,r8,pc}
- .unreq addr
- .unreq size
- .unreq x0
- .unreq x
- .unreq y
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement