80 likes | 235 Views
This guide delves into the intricacies of character data communication in MIPS assembly language, focusing on byte-encoded character sets like ASCII, Latin-1, and Unicode. It explains how MIPS handles string output and inputs through system calls, emphasizing the importance of memory addresses instead of direct ASCII values. By examining practical examples, including a simple "Hello World" program, this resource aids MIPS programmers in effectively managing strings, avoiding common pitfalls in string handling.
E N D
Character Data §2.9 Communicating with People • Byte-encoded character sets • ASCII: 128 characters • 95 graphic, 33 control • Latin-1: 256 characters • ASCII, +96 more graphic characters • Unicode: 32-bit character set • Used in Java, C++ wide characters, … • Most of the world’s alphabets, plus symbols • UTF-8, UTF-16: variable-length encodings Chapter 2 — Instructions: Language of the Computer — 2
How NOT to do Strings in MIPS • Should we try to output a string by putting ASCII values into $a0? • This is not correct. • Just as in C, you output a string by passing the MEMORY ADDRESS of the beginning of a sequence of characters (bytes). • Similarly, if you do a syscall 8 (read_string), the contents of the string read in are not in $a0. • How could, say, a 256 byte string fit into a 4 byte quantity?
Hello World # This is a simple program to print hello world .data greet: .asciiz "Hello world\n" .text main: li $v0, 4 la $a0, greet syscall # print the string jr $ra # return from main
Another example .data theString: .space 64 .text main: li $v0, 8 la $a0, theString li $a1, 64 syscall li $v0,4 syscall