汇编语言中的乘法指令为什么两数位数相同
1个回答
展开全部
两个相乘的数,要么都是8位,要么都是16位。为什么呢?
解释如下:
按照规定,如果是8位相乘,一个默认存储在AH中,另一个存储在8位寄存器或者内存字节单元中,计算结果默认放在AX中;
如果是16位相乘,一个默认存储在AX中,另一个存储在16位寄存器或者内存字单元中,计算结果默认高位放在DX,低位放在AX中。
我们来假设一下,如果是8位和16位相乘,CPU怎么执行:
如果是8位和16位相乘,那么假设你的8位存储在AH中,16位存储在一个16位的寄存器或者内存字单元中(我们假设存储在BX中),在CPU执行到语句:MUL BX 的时候,那么此时CPU看到是在与一个16位数相乘(因为BX是16位寄存器,存储的是16位的数),CPU就会默认将AX中的16位数与BX的数相乘,而不是与AH中的数相乘,这样不就混乱了吗?
如果是8位和16位相乘,反之假设你的16位存储在AX中,8位存储在一个8位的寄存器或者内存字节单元中,,,,,,,,,,,最后CPU还是会如上一个假设那样瞎计算,楼主也会很郁闷啊~
所以,两个相乘的数,要么都是8位,要么都是16位,本质上这是我们人和CPU的一个计算约定,CPU只会按照人定的规则办事。
解释如下:
按照规定,如果是8位相乘,一个默认存储在AH中,另一个存储在8位寄存器或者内存字节单元中,计算结果默认放在AX中;
如果是16位相乘,一个默认存储在AX中,另一个存储在16位寄存器或者内存字单元中,计算结果默认高位放在DX,低位放在AX中。
我们来假设一下,如果是8位和16位相乘,CPU怎么执行:
如果是8位和16位相乘,那么假设你的8位存储在AH中,16位存储在一个16位的寄存器或者内存字单元中(我们假设存储在BX中),在CPU执行到语句:MUL BX 的时候,那么此时CPU看到是在与一个16位数相乘(因为BX是16位寄存器,存储的是16位的数),CPU就会默认将AX中的16位数与BX的数相乘,而不是与AH中的数相乘,这样不就混乱了吗?
如果是8位和16位相乘,反之假设你的16位存储在AX中,8位存储在一个8位的寄存器或者内存字节单元中,,,,,,,,,,,最后CPU还是会如上一个假设那样瞎计算,楼主也会很郁闷啊~
所以,两个相乘的数,要么都是8位,要么都是16位,本质上这是我们人和CPU的一个计算约定,CPU只会按照人定的规则办事。
Sievers分析仪
2024-10-13 广告
2024-10-13 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准...
点击进入详情页
本回答由Sievers分析仪提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询