Распечатайте буквы слова в MIPS - PullRequest
2 голосов
/ 26 августа 2010

помогите пожалуйста написать программу на ассемблере (MIPS) У меня есть слово "привет!" и мне нужны следующие отпечатки:

h
he
hel
hell
hello
hello!

Я пробовал это:

.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

но он печатает мне всю строку, и мне нужна только одна или две буквы

спасибо за помощь

1 Ответ

2 голосов
/ 27 августа 2010

ОК, поэтому у вас есть системный вызов для печати строки с нулевым символом в конце.Тогда вам нужно будет либо

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

, либо

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

Надеюсь, вы знаете достаточно, чтобы закодировать один из них как ассемблер.Вы также можете реализовать первый, поменяв местами новую строку в строке и из нее, а также ноль.

...