Task

Show  the ASCII character set  from values   32   to   127   (decimal)   in a table format.




Other tasks related to string operations:

Metrics
 Array length
 String length
 Copy a string
 Empty string  (assignment)
Counting
 Word frequency
 Letter frequency
 Jewels and stones
 I before E except after C
 Bioinformatics/base count
 Count occurrences of a substring
 Count how many vowels and consonants occur in a string
Remove/replace
 XXXX redacted
 Conjugate a Latin verb
 Remove vowels from a string
 String interpolation (included)
 Strip block comments
 Strip comments from a string
 Strip a set of characters from a string
 Strip whitespace from a string -- top and tail
 Strip control codes and extended characters from a string
Anagrams/Derangements/shuffling
 Word wheel
 ABC problem
 Sattolo cycle
 Knuth shuffle
 Ordered words
 Superpermutation minimisation
 Textonyms (using a phone text pad)
 Anagrams
 Anagrams/Deranged anagrams
 Permutations/Derangements
Find/Search/Determine
 ABC words
 Odd words
 Word ladder
 Semordnilap
 Word search
 Wordiff  (game)
 String matching
 Tea cup rim text
 Alternade words
 Changeable words
 State name puzzle
 String comparison
 Unique characters
 Unique characters in each string
 Extract file extension
 Levenshtein distance
 Palindrome detection
 Common list elements
 Longest common suffix
 Longest common prefix
 Compare a list of strings 
 Longest common substring
 Find common directory path
 Words from neighbour ones
 Change e letters to i in words
 Non-continuous subsequences
 Longest common subsequence
 Longest palindromic substrings
 Longest increasing subsequence
 Words containing "the" substring
 Sum of the digits of n is substring of n
 Determine if a string is numeric
 Determine if a string is collapsible
 Determine if a string is squeezable
 Determine if a string has all unique characters
 Determine if a string has all the same characters
 Longest substrings without repeating characters
 Find words which contains all the vowels
 Find words which contains most consonants
 Find words which contains more than 3 vowels
 Find words which first and last three letters are equals
 Find words which odd letters are consonants and even letters are vowels or vice_versa
Formatting
 Substring
 Rep-string
 Word wrap
 String case
 Align columns
 Literals/String
 Repeat a string
 Brace expansion
 Brace expansion using ranges
 Reverse a string
 Phrase reversals
 Comma quibbling
 Special characters
 String concatenation
 Substring/Top and tail
 Commatizing numbers
 Reverse words in a string
 Suffixation of decimal numbers
 Long literals, with continuations 
 Numerical and alphabetical suffixes
 Abbreviations, easy
 Abbreviations, simple
 Abbreviations, automatic
Song lyrics/poems/Mad Libs/phrases
 Mad Libs
 Magic 8-ball
 99 Bottles of Beer
 The Name Game (a song)
 The Old lady swallowed a fly
 The Twelve Days of Christmas
Tokenize
 Text between
 Tokenize a string
 Word break problem
 Tokenize a string with escaping
 Split a character string based on change of character
Sequences
 Show ASCII table
 De Bruijn sequences
 Self-referential sequences
 Generate lower case ASCII alphabet




.equ CursorX,0x02000000
.equ CursorY,0x02000001
ProgramStart:
	mov sp,#0x03000000			;Init Stack Pointer
 
	mov r4,#0x04000000  		        ;DISPCNT -LCD Control
	mov r2,#0x403    			;4= Layer 2 on / 3= ScreenMode 3
	str	r2,[r4]         	        ;now the screen is visible
	bl ResetTextCursors			;set text cursors to top left of screen
 
	mov r2,#32
	mov r3,#32+20				;screen height is 20 chars
	mov r5,#0				;column spacer
	mov r6,#5
 
	;R0 = Character to print (working copy)
	;R2 = real copy
	;R3 = compare factor
loop_printAscii:
	mov r0,r2
	bl ShowHex
 
	mov r0,#32
	bl PrintChar
 
	mov r0,r2
	bl PrintChar
 
	bl CustomNewLine
	add r2,r2,#1
 
	cmp r2,#128
	beq forever		;exit early
 
	cmp r2,r3
	bne loop_printAscii
 
 
	add r3,r3,#20	;next section
 
	;inc to next column
	add r5,r5,#5
	mov r0,r5
	mov r1,#0
	bl SetTextCursors
	subs r6,r6,#1
	bne loop_printAscii
 
 
 
 
forever:
	b forever
 
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;		INPUT/OUTPUT SUBROUTINES   		- 		CREATED BY KEITH OF CHIBIAKUMAS.COM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
PrintString:					;Print 255 terminated string 
	STMFD sp!,{r0-r12, lr}
PrintStringAgain:
		ldrB r0,[r1],#1
		cmp r0,#255
		beq PrintStringDone		;Repeat until 255
		bl printchar 			;Print Char
		b PrintStringAgain
PrintStringDone:
	LDMFD sp!,{r0-r12, pc}
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PrintChar:
	STMFD sp!,{r0-r12, lr}
	mov r4,#0
		mov r5,#0
 
		mov r3,#CursorX
		ldrB r4,[r3]			;X pos
		mov r3,#CursorY
		ldrB r5,[r3]			;Y pos
 
		mov r3,#0x06000000 		;VRAM base
 
		mov r6,#8*2				;Xpos, 2 bytes per pixel, 8 bytes per char
		mul r2,r4,r6
		add r3,r3,r2
 
		mov r4,#240*8*2			;Ypos, 240 pixels per line,
		mul r2,r5,r4			;2 bytes per pixel, 8 lines per char
		add r3,r3,r2
 
		adr r4,BitmapFont 		;Font source
 
		sub r0,r0,#32			;First Char is 32 (space)
		add r4,r4,r0,asl #3		;8 bytes per char
 
		mov r1,#8				;8 lines 
DrawLine:
		mov r7,#8 				;8 pixels per line
		ldrb r8,[r4],#1			;Load Letter
		mov r9,#0b100000000		;Mask
 
		mov r2, #0b1111111101000000; Color: ABBBBBGGGGGRRRRR   A=Alpha
DrawPixel:
		tst r8,r9				;Is bit 1?
		strneh r2,[r3]			;Yes? then fill pixel (HalfWord)
		add r3,r3,#2
		mov r9,r9,ror #1		;Bitshift Mask
		subs r7,r7,#1
		bne DrawPixel			;Next Hpixel
 
		add r3,r3,#480-16	   ;Move Down a line (240 pixels *2 bytes) 
		subs r1,r1,#1								;-1 char (16 px)
		bne DrawLine			;Next Vline
 
LineDone:	
		mov r3,#CursorX
		ldrB r0,[r3]	
		add r0,r0,#1			;Move across screen
		strB r0,[r3]	
		mov r10,#30
		cmp r0,r10
		bleq NewLine
	LDMFD sp!,{r0-r12, pc}
 
NewLine:
	STMFD sp!,{r0-r12, lr}
		mov r3,#CursorX
		mov r0,#0
		strB r0,[r3]
		mov r4,#CursorY
		ldrB r0,[r4]
		add r0,r0,#1
		strB r0,[r4]
	LDMFD sp!,{r0-r12, pc}
 
CustomNewLine:
	STMFD sp!,{r0-r12, lr}
		mov r3,#CursorX
		mov r0,r5
		strB r0,[r3]
		mov r4,#CursorY
		ldrB r0,[r4]
		add r0,r0,#1
		strB r0,[r4]
	LDMFD sp!,{r0-r12, pc}	
 
ResetTextCursors:
	STMFD sp!,{r4-r6,lr}
		mov r4,#0
		mov r5,#CursorX
		mov r6,#CursorY
		strB r4,[r5]
		strB r4,[r6]
	LDMFD sp!,{r4-r6,lr}
	bx lr
 
SetTextCursors:
	;input: R0 = new X
	;	R1 = new Y
	STMFD sp!,{r5-r6}
		mov r5,#CursorX
		mov r6,#CursorY
		strB r0,[r5]
		strB r1,[r6]
	LDMFD sp!,{r5-r6}
	bx lr
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
ShowHex:
	STMFD sp!,{r0-r12, lr}
		mov r2,r0,ror #4
		bl ShowHexChar	
		mov r2,r0
		bl ShowHexChar	
	LDMFD sp!,{r0-r12, pc}		
 
ShowHexChar:
	STMFD sp!,{r0-r12, lr}
		;mov r3,
		and r0,r2,#0x0F ; r3
		cmp r0,#10
		addge r0,r0,#7			;if 10 or greater convert to alphabet letters a-f
		add r0,r0,#48
		bl PrintChar	
	LDMFD sp!,{r0-r12, pc}	
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
BitmapFont:
;each byte represents a row of 8 pixels. This is a 1BPP font that is converted to the GBA's 16bpp screen format at runtime
        .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00     ; 20
        .byte 0x10,0x18,0x18,0x18,0x18,0x00,0x18,0x00     ; 21
        .byte 0x28,0x6C,0x28,0x00,0x00,0x00,0x00,0x00     ; 22
        .byte 0x00,0x28,0x7C,0x28,0x7C,0x28,0x00,0x00     ; 23
        .byte 0x18,0x3E,0x48,0x3C,0x12,0x7C,0x18,0x00     ; 24
        .byte 0x02,0xC4,0xC8,0x10,0x20,0x46,0x86,0x00     ; 25
        .byte 0x10,0x28,0x28,0x72,0x94,0x8C,0x72,0x00     ; 26
        .byte 0x0C,0x1C,0x30,0x00,0x00,0x00,0x00,0x00     ; 27
        .byte 0x18,0x18,0x30,0x30,0x30,0x18,0x18,0x00     ; 28
        .byte 0x18,0x18,0x0C,0x0C,0x0C,0x18,0x18,0x00     ; 29
        .byte 0x08,0x49,0x2A,0x1C,0x14,0x22,0x41,0x00     ; 2A
        .byte 0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00     ; 2B
        .byte 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30     ; 2C
        .byte 0x00,0x00,0x00,0x7E,0x7E,0x00,0x00,0x00     ; 2D
        .byte 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00     ; 2E
        .byte 0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00     ; 2F
        .byte 0x7C,0xC6,0xD6,0xD6,0xD6,0xC6,0x7C,0x00     ; 30
        .byte 0x10,0x18,0x18,0x18,0x18,0x18,0x08,0x00     ; 31
        .byte 0x3C,0x7E,0x06,0x3C,0x60,0x7E,0x3C,0x00     ; 32
        .byte 0x3C,0x7E,0x06,0x1C,0x06,0x7E,0x3C,0x00     ; 33
        .byte 0x18,0x3C,0x64,0xCC,0x7C,0x0C,0x08,0x00     ; 34
        .byte 0x3C,0x7E,0x60,0x7C,0x06,0x7E,0x3E,0x00     ; 35
        .byte 0x3C,0x7E,0x60,0x7C,0x66,0x66,0x3C,0x00     ; 36
        .byte 0x3C,0x7E,0x06,0x0C,0x18,0x18,0x10,0x00     ; 37
        .byte 0x3C,0x66,0x66,0x3C,0x66,0x66,0x3C,0x00     ; 38
        .byte 0x3C,0x66,0x66,0x3E,0x06,0x7E,0x3C,0x00     ; 39
        .byte 0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00     ; 3A
        .byte 0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x30     ; 3B
        .byte 0x0C,0x1C,0x38,0x60,0x38,0x1C,0x0C,0x00     ; 3C
        .byte 0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00     ; 3D
        .byte 0x60,0x70,0x38,0x0C,0x38,0x70,0x60,0x00     ; 3E
        .byte 0x3C,0x76,0x06,0x1C,0x00,0x18,0x18,0x00     ; 3F
        .byte 0x7C,0xCE,0xA6,0xB6,0xC6,0xF0,0x7C,0x00     ; 40 @
        .byte 0x18,0x3C,0x66,0x66,0x7E,0x66,0x24,0x00     ; 41 A
        .byte 0x3C,0x66,0x66,0x7C,0x66,0x66,0x3C,0x00     ; 42 B
        .byte 0x38,0x7C,0xC0,0xC0,0xC0,0x7C,0x38,0x00     ; 43 C
        .byte 0x3C,0x64,0x66,0x66,0x66,0x64,0x38,0x00     ; 44 D
        .byte 0x3C,0x7E,0x60,0x78,0x60,0x7E,0x3C,0x00     ; 45 E
        .byte 0x38,0x7C,0x60,0x78,0x60,0x60,0x20,0x00     ; 46 F
        .byte 0x3C,0x66,0xC0,0xC0,0xCC,0x66,0x3C,0x00     ; 47 G
        .byte 0x24,0x66,0x66,0x7E,0x66,0x66,0x24,0x00     ; 48 H
        .byte 0x10,0x18,0x18,0x18,0x18,0x18,0x08,0x00     ; 49 I
        .byte 0x08,0x0C,0x0C,0x0C,0x4C,0xFC,0x78,0x00     ; 4A J
        .byte 0x24,0x66,0x6C,0x78,0x6C,0x66,0x24,0x00     ; 4B K
        .byte 0x20,0x60,0x60,0x60,0x60,0x7E,0x3E,0x00     ; 4C L
        .byte 0x44,0xEE,0xFE,0xD6,0xD6,0xD6,0x44,0x00     ; 4D M
        .byte 0x44,0xE6,0xF6,0xDE,0xCE,0xC6,0x44,0x00     ; 4E N
        .byte 0x38,0x6C,0xC6,0xC6,0xC6,0x6C,0x38,0x00     ; 4F O
        .byte 0x38,0x6C,0x64,0x7C,0x60,0x60,0x20,0x00     ; 50 P
        .byte 0x38,0x6C,0xC6,0xC6,0xCA,0x74,0x3A,0x00     ; 51 Q
        .byte 0x3C,0x66,0x66,0x7C,0x6C,0x66,0x26,0x00     ; 52 R
        .byte 0x3C,0x7E,0x60,0x3C,0x06,0x7E,0x3C,0x00     ; 53 S
        .byte 0x3C,0x7E,0x18,0x18,0x18,0x18,0x08,0x00     ; 54 T
        .byte 0x24,0x66,0x66,0x66,0x66,0x66,0x3C,0x00     ; 55 U
        .byte 0x24,0x66,0x66,0x66,0x66,0x3C,0x18,0x00     ; 56 V
        .byte 0x44,0xC6,0xD6,0xD6,0xFE,0xEE,0x44,0x00     ; 57 W
        .byte 0xC6,0x6C,0x38,0x38,0x6C,0xC6,0x44,0x00     ; 58 X
        .byte 0x24,0x66,0x66,0x3C,0x18,0x18,0x08,0x00     ; 59 Y
        .byte 0x7C,0xFC,0x0C,0x18,0x30,0x7E,0x7C,0x00     ; 5A Z
        .byte 0x1C,0x30,0x30,0x30,0x30,0x30,0x1C,0x00     ; 5B [
        .byte 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x00     ; 5C Backslash
        .byte 0x38,0x0C,0x0C,0x0C,0x0C,0x0C,0x38,0x00     ; 5D ]
        .byte 0x10,0x28,0x44,0x00,0x00,0x00,0x00,0x00     ; 5E ^
        .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C     ; 5F _
        .byte 0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00     ; 60 `
        .byte 0x00,0x00,0x38,0x0C,0x7C,0xCC,0x78,0x00     ; 61
        .byte 0x20,0x60,0x7C,0x66,0x66,0x66,0x3C,0x00     ; 62
        .byte 0x00,0x00,0x3C,0x66,0x60,0x66,0x3C,0x00     ; 63
        .byte 0x08,0x0C,0x7C,0xCC,0xCC,0xCC,0x78,0x00     ; 64
        .byte 0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00     ; 65
        .byte 0x1C,0x36,0x30,0x38,0x30,0x30,0x10,0x00     ; 66
        .byte 0x00,0x00,0x3C,0x66,0x66,0x3E,0x06,0x3C     ; 67
        .byte 0x20,0x60,0x6C,0x76,0x66,0x66,0x24,0x00     ; 68
        .byte 0x18,0x00,0x18,0x18,0x18,0x18,0x08,0x00     ; 69
        .byte 0x06,0x00,0x04,0x06,0x06,0x26,0x66,0x3C     ; 6A
        .byte 0x20,0x60,0x66,0x6C,0x78,0x6C,0x26,0x00     ; 6B
        .byte 0x10,0x18,0x18,0x18,0x18,0x18,0x08,0x00     ; 6C
        .byte 0x00,0x00,0x6C,0xFE,0xD6,0xD6,0xC6,0x00     ; 6D
        .byte 0x00,0x00,0x3C,0x66,0x66,0x66,0x24,0x00     ; 6E
        .byte 0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00     ; 6F
        .byte 0x00,0x00,0x3C,0x66,0x66,0x7C,0x60,0x20     ; 70
        .byte 0x00,0x00,0x78,0xCC,0xCC,0x7C,0x0C,0x08     ; 71
        .byte 0x00,0x00,0x38,0x7C,0x60,0x60,0x20,0x00     ; 72
        .byte 0x00,0x00,0x3C,0x60,0x3C,0x06,0x7C,0x00     ; 73
        .byte 0x10,0x30,0x3C,0x30,0x30,0x3E,0x1C,0x00     ; 74
        .byte 0x00,0x00,0x24,0x66,0x66,0x66,0x3C,0x00     ; 75
        .byte 0x00,0x00,0x24,0x66,0x66,0x3C,0x18,0x00     ; 76
        .byte 0x00,0x00,0x44,0xD6,0xD6,0xFE,0x6C,0x00     ; 77
        .byte 0x00,0x00,0xC6,0x6C,0x38,0x6C,0xC6,0x00     ; 78
        .byte 0x00,0x00,0x24,0x66,0x66,0x3E,0x06,0x7C     ; 79
        .byte 0x00,0x00,0x7E,0x0C,0x18,0x30,0x7E,0x00     ; 7A
        .byte 0x10,0x20,0x20,0x40,0x40,0x20,0x20,0x10     ; 7B {
        .byte 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10     ; 7C |
        .byte 0x08,0x04,0x04,0x02,0x02,0x04,0x04,0x08     ; 7D }
        .byte 0x00,0x00,0x00,0x20,0x52,0x0C,0x00,0x00     ; 7E ~
        .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00     ; 7F
	.byte 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF	  ; 80