这是我在PCSpim中实现此代码的代码
## Two 16 bits value is assigned in data segment
## Provide Selector value in console window
## Result is displayed
.text
.globl main
main:
la $s1, value
lb $t1, 0($s1)
lb $t2, 2($s1)
li $v0, 4
la $a0, msg1
syscall
li $v0, 5 ##selector
syscall
add $s3, $v0, $0 ##selector in s3
addi $s4, $0, 0 ##carry in 0 in s4
addi $t0,$0, 3
bne $t0, $s0, LabelY
addi $s4, $0, 1 ##carry in 1 substruction
LabelY:
jal aBitALU
li $v0, 4
la $a0, msg2
syscall
li $v0, 1
move $a0, $t6
syscall
li $v0, 1
move $a0, $t7
syscall
li $v0, 10
syscall
aBitALU:
add $s0, $0, $s3
add $s1, $0, $s4
andi $t5, $t2, 1
andi $t4, $t1, 1
addi $t0,$0, 0
beq $t0, $s0, Label0
addi $t0,$0, 1
beq $t0, $s0, Label1
addi $t0,$0, 2
beq $t0, $s0, Label2
addi $t0,$0, 3
beq $t0, $s0, Label3
addi $t0,$0, 4
beq $t0, $s0, Label4
addi $t0,$0, 5
beq $t0, $s0, Label5
addi $t0,$0, 6
beq $t0, $s0, Label6
addi $t0,$0, 7
beq $t0, $s0, Label7
Label0:
or $t6, $t5, $t4 #binary or
jr $ra
Label1:
and $t6, $t5, $t4 #binary and
jr $ra
Label2:
#binary addition
xor $a0, $t4, $t5 #sum
xor $a1, $a0, $s1
and $a0, $a0, $s1
and $a2, $t4, $t5
or $a0, $a0, $a2 #cout
add $t6, $a0, $0
add $t7, $a1, $0
jr $ra
Label3:
#binary 2's complement substruction
nor $t7, $t5, $t5
andi $t7, $t7,1
xor $a0, $t4, $t7 #sum
xor $a1, $a0, $s1
and $a0, $a0, $s1
and $a2, $t4, $t7
or $a0, $a0, $a2 #cout
add $t6, $a0, $0
add $t7, $a1, $0
jr $ra
Label7:
slt $t6, $t5, $t4
jr $ra
.data
value: .half 4, 5, 0
msg1: .asciiz "Selector Value = "
msg2: .asciiz "Result = "
选择器值2表示相加(5+6=11)
结果 =00 我的意思是第一个零标志然后进位标志 但在输出中,MSB 显示在最后,LSB 显示在前面 我的意思是MSB变成LSB,LSB变成MSB 应该是 0000 0000 0000 1101 我怎么解决呢???