MIPS 中的 16 位 ALU

问题描述 投票:0回答:0

这是我在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 我怎么解决呢???

assembly mips cpu-architecture alu pcspim
© www.soinside.com 2019 - 2024. All rights reserved.