Member 13618628 Ответов: 1

Кто-нибудь знает код mips?


Привет
У меня есть проект из моего колледжа по программированию в коде mips. Но содержание регистра не увеличивается
.Я должен запрограммировать в mips печать, если сумма цифр чисел от 1 до 1000 делится на 5 и 7, а не на 3 печати
Извините за мой английский

Что я уже пробовал:

.data
x: .word 1
.space 4000
li $v0,5
la $a0,x
syscall 
.data 


loop:
sw $t0,$a0
addi $t1,$zero,10
add $t4,$zero,$zero
rem $t4,$t0,$t1
div $t0,$t0,$t1
bne $t0,$zero,loop

rem $t5,$t4,5
bnez $t5,label
rem $t6,$t4,7
bnez $t6,label
rem $t7,$t4,3
beqz $t7,label

li $v0,1
move $a0,$t4

syscall 
j label

label:
add $a0,$a0,1

ble $t0,1000,loop
#li $v0,5
#la $a0,$t0
#syscall

1 Ответов

Рейтинг:
2

CPallini

Да, конечно :-)

Ну, мой MIPS сборка ржавая. Однако следующий код дает правильный результат (проверено на симуляторе)

    li t0, 1	# t0 is the index of the loop (1..1000)	  
    li t1, 0    # t1 is the sum of the selected numbers
                # t2 is a temporary
    li t3, 3    # t3 holds the constant number 3
    li t5, 5    # t5 holds the constant number 5
    li t7, 7    # t7 holds the constant number 7
loop:
    rem t2, t0, t3
    beq t2, zero, skipadd
    nop
    rem t2, t0, t5
    bne t2, zero, skipadd
    nop
    rem t2, t0, t7
    bne t2, zero, skipadd
    nop
    addu t1, t1, t0
skipadd:
    addiu t0,t0, 1
    li t2,1001
    bne t0,t2, loop
    nop
    nop		 # here t1 contains the result