私はアセンブリ言語が初めてで、奇妙なエラーが発生しています。プログラムは、ユーザーが入力した整数の最下位 4 ビットを表示することになっています。8 より大きい数値に対しては機能しますが、8 以下の数値に対しては、1 があるべき桁を出力します。8 の場合は 1000 ではなく 8000 を出力し、5 の場合は 0401 を出力します。理由がわかりません。誰か助けてもらえますか?
.data
inPrompt: .asciiz "Enter an integer: "
outLab: .asciiz "Least significant 4 bits of int entered are "
############################ code segment ################################
.text
.globl main
main:
li $v0, 4
la $a0, inPrompt
syscall # print input prompt
li $v0, 5
syscall # read input integer
move $t0, $v0
li $v0, 4
la $a0, outLab
syscall
li $v0, 1
andi $a0, $t0, 8
syscall
andi $a0, $t0, 4
syscall
andi $a0, $t0, 2
syscall
andi $a0, $t0, 1
syscall
##########################################################
li $v0, 10 # exit
syscall