MIPS第三章学习(计算机的算术运算)

加法和减法

减法可以采用的操作:

1.直接减

2.加上被减数的补码

考虑可能发生溢出的几种情况

1.两个符号相同的数相加

2.两个符号相反的数相减

(用正数减负数得到负数的结果   或者     是用负数减正数得到正数的结果)

------>MIPS检测溢出的方法:

采用两种算数指令

加法(add)立即数加法(addi)和减法(sub)在溢出时产生异常

无符号加法(addu)立即数无符号减法(addiu)和无符号减法(subu)在溢出时不会产生异常

 在这里就要想到符号拓展了:

在MIPS语言中,许多指令规定立即数是16位的,例如addi,对于addiu来说,与add,addi和sub指令类似,16位立即数要拓展为32位

乘法

对于正数:通过乘数不断地右移一位,被乘数不断地左移一位,然后将所得乘积全部相加

有符号乘法:将被乘数与乘数化为正数(采用补码的形式)并记住原来的符号位,迭代31次,当符号位相异时,结果为负

MIPS单独提供了一堆32位寄存器来容纳64位的积,称为Hi和Lo

为了产生正确的有符号积和无符号积,MIPS提供了两条指令:

乘法(mult)和无符号乘法(multu)

MIPS乘法指令都忽略溢出------->利用软件来检测是否因积过大而32位不够表示-------->

对于multu,如果Hi为0则无溢出,对于mult,如果Hi为Lo的符号位则也无溢出

除法 

除法比乘法要稍微复杂一点,首先要确定商寄存器的位数,例如是4位的,则需要将除数向左移四位,然后比较移完的除数与被除数的关系,用被除数减去除数,若结果>0,则商低位为一,将商左移一位,除数右移一位,被除数减除数,继续比较,否则为0,商低位为0,将商左移一位,除数右移一位,继续比较。

有符号除法

记住除数和被除数的符号位,相异,则商为负

有符号数(div)无符号数(divu),寄存器与乘法相同

浮点运算

利用32比特的字长表示浮点数

符号位置于最高位,指数位放在有效位前(有着相同符号的情况下,指数大的其数值就越大),尾数宽度影响表示范围(字的大小是固定的,尾数和指数的位宽需要折中掂量

MIPS单精度浮点数:指数域8位,尾数域23位,符号1位

IEEE 754浮点标准-隐藏规格化二进制数的前导位1(去除了1,只保留小数点后的几位)

                             -引入带偏阶的计数法(将最小的负指数表示为00...000,最大的正整数表示为11...111)

可能导致的问题:

上溢:正的指数太大而导致指数域放不下

下溢:付的指数太大而导致指数域放不下

------->双精度浮点数:指数域11位,尾数域52位,符号1位

MIPS32汇编语言是一种常用的低级编程语言,用于编写针对MIPS架构的程序。下面是用MIPS32汇编语言实现32位算术逻辑运算的一般步骤: 1. 加法运算: - 使用`add`指令将两个操作数相加,并将结果存储在目标寄存器中。 - 例如,要将寄存器`$t0`和`$t1`中的值相加,并将结果存储在`$t2`中,可以使用以下指令:`add $t2, $t0, $t1` 2. 减法运算: - 使用`sub`指令将第二个操作数从第一个操作数中减去,并将结果存储在目标寄存器中。 - 例如,要将寄存器`$t0`中的值减去寄存器`$t1`中的值,并将结果存储在`$t2`中,可以使用以下指令:`sub $t2, $t0, $t1` 3. 乘法运算: - 使用`mul`指令将两个操作数相乘,并将结果的低32位存储在目标寄存器中。 - 例如,要将寄存器`$t0`和`$t1`中的值相乘,并将结果的低32位存储在`$t2`中,可以使用以下指令:`mul $t2, $t0, $t1` 4. 除法运算: - 使用`div`指令将第一个操作数除以第二个操作数,并将商存储在目标寄存器中。 - 例如,要将寄存器`$t0`中的值除以寄存器`$t1`中的值,并将商存储在`$t2`中,可以使用以下指令:`div $t0, $t1`,然后使用`mflo`指令将商从特殊寄存器`LO`中移动到`$t2`中:`mflo $t2` 5. 位运算: - 使用相应的位运算指令进行位与(`and`)、位或(`or`)、位异或(`xor`)等操作。 - 例如,要将寄存器`$t0`和`$t1`中的值进行位与,并将结果存储在`$t2`中,可以使用以下指令:`and $t2, $t0, $t1` 以上是用MIPS32汇编语言实现32位算术逻辑运算的一般步骤。如果你有具体的问题或需要更详细的示例,请告诉我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值