我只是Assembly MIPS的初学者。我试图用MIPS编写一个程序来将下面的两个整数相除:
#Data segment
.data
Input1: .asciiz "Dividend (16 bit): "
Input2: .asciiz "Divisor (8 bit): "
OutQ: .asciiz "Quotient (8 bit) = "
OutR: .asciiz "Remainder (8 bit) = "
#Code segment
.text
.globl main
main:
la $a0,Input1
addi $v0,$zero,4
syscall
addi $v0,$zero,5
syscall
addu $t2,$zero,$v0
la $a0,Input2
addi $v0,$zero,4
syscall
addi $v0,$zero,5
syscall
addu $t3,$zero,$v0
#Initiate Q=0, R=divisor, D<<7, Cnt=8
sll $t3,$t3,7 #create Divisor*(2^7)
addi $t0,$zero,0 #Q=0
addu $t1,$zero,$t2 #R=divisor
addi $t4,$zero,8 #R = R - D
divide0: sub $t1,$t1,$t3
#R<0?
lui $t5,0x8000
and $t5,$t5,$t1
beq $t5,$zero,Divide1
# R<0
add $t1,$t1,$t3
sll $t0,$t0,1 #bit_i=0
b Divide2
# R>=0
Divide1: sll $t0,$t0,1
ori $t0,$t0,1 #bit_i=1
#Shift Right D
Divide2: srl $t3,$t3,1
#n=8 times
addi $t4,$t4,-1
bne $t4,$zero,divide0
#Print Result
la $a0,OutQ
addi $v0,$zero,4
syscall
addu $a0,$zero,$t0
addi $v0,$zero,1
syscall
addu $a0,$zero,'\n'
addi $v0,$zero,11
syscall
la $a0,OutR
addi $v0,$zero,4
syscall
addu $a0,$zero,$t1
addi $v0,$zero,1
syscall
#End Program
ADDI $v0,$zero,10
syscall
我想知道是否可以在不使用div.s的情况下修改该程序以将两个浮点数相除,并且该怎么办? 我只是一个初学者,所以请帮助我! 提前非常感谢您!