В ответ на вопрос, указанный ниже,
Напишите программу на языке ассемблера MIPS32, которая считывает положительное целое число N и распечатывает следующее: 1 12 123 1234 12345 ... 1 2 3 4 5 6 ... N
Вот мой код, показанный ниже:
.data
word: .asciiz "Please enter a random row: \n"
.text
.globl main
main:
la $a0, word # load word
li $v0, 4
syscall
li $v0, 1 # service 1 is print integer
move $a0, $t0 # move register to be printed into argument
register $a0
syscall
lw $s0, row # $s0 = row
addi $s0, $s0, -1 # for accommodating loop condition
li $s1, 1 # set i = 1
li $s2, 1 # set j = 1
loop1:
blt $s0, $s1, Exit # for(i = 0; i < row; i++)
addi $s1, $s1, 1 # i++
li $s2, 1 # resets j to 1 after every iteration of for
loop
move $a0, $t0 # move register to be printed into argument
register $a0
j loop2 # executing the nested for loop
loop2:
blt $s1, $s2, loop1 # for(i = 0; i < j; i++)
li $v0, 1 # read_double => scanf("%d")
move $a0, $t0 # move register to be printed into argument $a0
syscall
j loop2
li $v0, 10 # loading exit code
syscall # execute exit
Так как я старался довести дело до конца, то все равно не смог добиться ожидаемого результата.
Вот как вы напишете код для этого:
Спросите у пользователя значение N и сохраните.
Создайте цикл, который будет продолжаться до N итераций (см. Условное ветвление)
Для N итераций сохраните значение 1, 1 + = 1, ... N в регистре.
Помните, что каждое слово состоит из 4 байтов. Убедитесь, что вы меняете место доступа к реестру, чтобы правильно сохранить свои значения, иначе они будут перезаписывать друг друга.
Используйте другой цикл для печати всех значений (опять же, условное ветвление).
Если вам нужна помощь с кодом, попробуйте сначала написать что-нибудь. :-)
Здравствуйте, спасибо за ответ. Теперь я предоставил свой код выше, надеюсь, что вы можете дать мне какие-то отзывы об этом.
Какое задание? Написать код на C для этого? Напишите для этого код MIPS? Или перевести существующий C на MIPS? В любом случае, пожалуйста, проявите свои усилия и задайте более конкретный вопрос. Никто не будет (и не должен) просто предоставлять вам бесплатную услугу написания кода. Особенно за домашнее задание.