You would like:
length( string1 ) + length( string2 ) =length( concat( string1, string2) )
If the null at the end of each string counted as part of its length, then this would be false, because the combined string has only one null (at the end) but there are two nulls in the two original strings.
There are several ways to do what the second box of the chart
calls for: "point at the first character".
In a few chapters doing this will be much easier.
But, for now, remember that the
data section starts at the address 0x10000000
.
The top halfword of this is 0x1000
.
This is loaded into the top halfword of the
base register with
lui
## strlen.asm ## ## Count the characters in a string ## ## Registers: ## $8 --- count ## $9 --- pointer to the char ## $10 --- the char (in low order byte) .text .globl main # Initialize main: ori $8,$0,0 # count = 0 lui $9,0x1000 # point at first char # while not ch==null do loop: lbu $10,____($9) # get the char sll $0,$0,0 # load delay slot _____ $10,$0,done # exit loop if char == null sll $0,$0,0 # branch delay slot . . . j loop # finish done: sll $0,$0,0 # target for branch .data string: .asciiz "Time is the ghost of space." ## End of file