-1
整数を1つずつ取り込み、0になりプログラムが終了するまで8ビットバイナリに変換するプログラムをMIPSで作成しようとしています。私のコードは、偶数の場合は0、奇数の場合は1を出力しています。なぜこのことが分かりませんか?MIPS小数点から8ビットのバイナリプログラムをデバッグ
.data
zeroString: .asciiz "00000000\n"
.text
main:
li $v0, 5 # 5 = syscall code to read int
syscall
beq $v0, 0, exit #exit when 0 is entered
move $t0, $v0 #t0=v0
la $t2, 0 #counter
do: #loop
ANDI $t1, $t0, 0x01 #check if least significant digit is 1
addi $t2, $t2, 1 #increase counter
move $a0, $t1 #printing value of t1
li $v0, 1
syscall
srl $t1, $t1, 1 #shift to next digit
bne $t2, 7, do #check if counter equal to target
# Print a new line
li $a0, '\n' # $a0 = ascii code for newline char
li $v0, 11 # 11 = syscall code to print char
syscall # Print newline
j main
exit:
la $a0, zeroString
li $v0, 4
syscall
li $v0, 10
syscall
これは、下位ビットの8つのコピー(1桁の整数)を意味していますか?デバッガでコードをシングルステップ実行し、レジスタ値を変更します。ループ内の各命令の入力と出力として使用しているレジスタを注意深く見てください。 –