Sergey
Sergey

Reputation: 29

Print the letters of the word in MIPS

please help me to write program in assembly (MIPS) I have a word "hello!" and I need the mips prints next:

h
he
hel
hell
hello
hello!

I tried this:

.data
lbl1: .asciiz "hello!"
lbl2: .asciiz "h "
end_line: .asciiz "\n"

 .text
 main:  la $s0, lbl1
        move $a0, $s0
        addi $v0, $zero, 4
        syscall jr $ra

but it prints me all the string and i need only one letter or two.

thanks for help

Upvotes: 2

Views: 4773

Answers (1)

Rup
Rup

Reputation: 34408

OK, so you have a syscall to print a zero-terminated string. What you're going to have to then is either

for i = 1 to 6 (length of "hello!")    
    read the character from position i in your string and store it safely
    write a 0 into your string at position i
    syscall to print the edited string
    write the saved character back to position i
    syscall to print the newline
next

or

allocate a buffer for a complete copy of your string
for i = 1 to 6
   copy the first i characters of your string into the buffer
   append a newline and a zero to terminate the string
   syscall to print the buffer
next

Hopefully you know enough to code one of these up as assembler. You could also implement the first one by swapping the newline in and out of the string as well as the zero.

Upvotes: 2

Related Questions