Напишите программу MIPS, которая проверяет, является ли число двух. Установите регистр $ t0 на некоторое значение в SPIM и используйте его для проверки мощности двух. Программа будет генерировать выходные данные в консоли.Напишите программу MIPS, которая проверяет, является ли число числом двух
35 не является силой двух.
256 - это сила двух.
До сих пор, у меня есть этот
.data
spc1: .asciiz " "
nl: .asciiz "\n"
tb: .asciiz "\t"
msg1: .asciiz "is not a power of two."
msg2: .asciiz "is a power of two."
.text # "text section" code and read-only data
.globl main # declare `main' as a global symbol
main: #sra $t1, $t0, 1
li $t1, 1
loop: beq $t0, $t1, end
sra $t0, $t0, 1
j loop
end: la $a0, msg2
li $v0, 4
syscall
addi $v0, $0, 10
syscall
Я поставил $ t0 в симуляторе, так что работает отлично. Но независимо от того, на каком количестве я его устанавливаю, я получаю «сила двух». Я использую shift left, но это продолжает давать мне неправильный ответ. Как правильно использовать сдвиг для ответа на эту проблему?
'sra' - это правая смена, а не сдвиг влево. – nneonneo