assembly 我需要帮助制作程序集mips代码来计算x^y

s3fp2yjn  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(106)

我需要一个汇编mips代码,要求用户输入2个整数并计算指数,例如:他们把2和8相加,结果是256,因为2^8 = 256。
我知道怎么问号码:

.data
    prompt1: .asciiz "X: "
    prompt2: .asciiz "Y: "
    result: .ascii "Result: "

但我不知道如何使用它们或如何生成x^y

pgx2nnw8

pgx2nnw81#

如果这两个整数始终都是无符号或正的,则可以执行以下操作(在这种情况下,输入不是来自用户,您应该为前2条li指令添加syscalls,以便执行此操作):
$a0:x变量$a1:y变量

.text
li  $a0, 5 #x variable
li  $a1, 3 #y variable
jal exponent
li  $v0, 10
syscall

    exponent:
addi    $sp, $sp, -12   #decrement the stack pointer
sw  $s0, 0($sp) #store values for not muting
sw  $s1, 4($sp)
sw  $s2, 8($sp)

move    $s0, $a0
move    $s1, $a1
li  $s2, 1
    ###PRINT###
la  $a0, prompt1
li  $v0, 4
syscall
move    $a0, $s0
li  $v0, 1
syscall
la  $a0, prompt2
li  $v0, 4
syscall
move    $a0, $s1
li  $v0, 1
syscall
    ###END PRINT###
    loop:           
mul $s2, $s2, $s0   #in each iteration 1 multiplication done
addi    $s1, $s1, -1
bne $s1, 0, loop    #when $a1 equals 0 it will go on 

    ###PRINT###
la  $a0, result
li  $v0, 4
syscall
move    $a0, $s2
li  $v0, 1
syscall
    ###END PRINT###
move    $v0, $s2    
lw  $s0, 0($sp) #load values for not muting
lw  $s1, 4($sp)
lw  $s2, 8($sp)
addi    $sp, $sp, 12
jr  $ra

    .data
    .align 2
prompt1:    .asciiz     "X: "
    .align 2
prompt2:    .asciiz     "Y: "
    .align 2
result:     .asciiz     "Result: "

如果你的目标是覆盖负数,你应该为这种情况添加另一个循环,在它里面,而不是穆尔指令,你应该使用div。
请记住,在Stackoverflow中,您不应该要求整个程序:)

相关问题