1. ホーム
  2. python

[解決済み】MIPSでmod演算子を正しく使うには?

2022-02-01 20:18:13

質問事項

MIPSで、MODを動作させる方法に戸惑っています。以下は、私がこれまでに思いついたコードです。MOD以外にもエラーがあるかもしれませんが、それらのエラーはMODの勘違いの結果だと感じています。私がやろうとしていることは、動作するコード(python)をここに持ってくることです。

i = 1
k = 0
while i < 9:
if i % 2 != 0:
    k = k + i
i += 1
print(k)

をMIPSに正しく変換してください。これは私の初めてのアセンブリなので、以下のコードで私をつまずかせるmodエラー以上のものがあるかもしれません。

# Takes the odd integers from 1 to 9, adds them,
#  and spits out the result.
# main/driver starts here
    .globl main

main:

#data segment
.data

Li:     .byte 0x01  # i = 1
Lj:     .byte 0x09  # j = 9
Lk:     .byte 0x00  # k = 0
Ltwo:   .byte 0x02  # 2 for mod usage

# text segment
.text

lb $t0, Li      # temp reg for i
lb $t1, Lj      # j
lb $t2, Lk      # k
lb $t3, Ltwo        # 2

L1:  beq $t0, $t1, L2   # while i < 9, compute
     div $t0, $t3       # i mod 2
     mfhi $t6        # temp for the mod
     beq $t6, 0, Lmod   # if mod == 0, jump over to L1
     add $t2, $t2, $t0  # k = k + i
Lmod:    add $t0, $t0, 1        # i++
     j L1           # repeat the while loop


L2: li $v0, 1       # system call code to print integer
lb $a0, Lk      # address of int to print
syscall

li $v0, 10
syscall

解決方法は?

SPIMレジスタを16進数で表示しています。16進数の10は10進数の16です。