问题描述
- sub指令 到底会不会转成加法算,还是在机器中算减法
-
困惑求解答,为了减法运算,机器中都用补码表示数了,那为什么还用减法的指令。
如此题:SUB?AL,BL.AL=80H,BL=80H。在机器中是怎么算的?直接减还是再变成补码然后算加法。
溢出标志和进位标志是什么?
解决方案
当然不会。在计算机中,有sub指令。当然不会被编译器转换为add。
但是现代cpu内部,使用了微指令编程,不排除在某些cpu内部,加法指令和减法指令公用了相同的晶体管电路。
解决方案二:
一般的芯片都有加法指令,对应着芯片内部一个组合逻辑电路组成的加法器(数字电子技术里面学过的)。如果该芯片没有减法指令,会采用补码技术将减法转换成加法进行运算(C语言的编译过程。如果是汇编程序,因为没有减法指令,也不会出现机器自动转化的动作)
如果有减法指令,则还有一个减法电路。这时候一般不会用补码技术将减法转换成加法操作。
单片机内部的运算指令运行机制,可以理解为:读取指令后,通过译码器选通相应的运算电路(组合逻辑)获得运算结果。每条运算指令都有对应的内部运算电路。
时间: 2024-09-12 21:56:48