涉及汇编语言
字节乘结果16位存于AX中,高8位AH ,低8位AL ;字结果为32位于DX AX中,高16位DX,低16位AX.”高-半为低一 半的符号扩
展”的说法不确切,应该说“位是低位的符号扩展”,低位是指积的值部分,高位指积的符号部分常常是字节乘的结果不足16位字乘的
结果不足32位多出的位怎么办?就进行符号扩展由于多出的位是高位所以叫鎬位符号扩展
比如你的例子,是字节乘 imul bl .
操作为AL * BL结果存于AX中,其中(AH) = FAH,(AL)= F4H
结果的二进制式为1111010011111010B
显然数值部分是010011111010,加上一位符号位是不足16位的,而符号部分是1111有四位并不是我们习惯的一位这就是进行了位
符号扩展的结果.
为什么要进行扩展?是因为结果的位数在指令中是一定的计算机不可能根据我们结果的实际位数而调整结果的位数,所以不足的位必须补足,这样高位扩展符号的做法是即能够满足结果位数约定,又不影响结果值的正确性的.高位扩展符号的原则是正数填0负数填1.
可以演算一下1111010011111010B (高四位是符号)和101011111010B的实际值是不一样
符号扩展则CF=0; OF=0; 否则CF=1,OF=1 是一种约定或者说是标识在处理结果时,计算机会根据CF、OF的状态判断是否有符号扩
展从而做出相应正确处理