汇编语言有符号乘法指令我对那个乘法指令IMUL不懂乘积的高一半为低一半的符号扩展则CF=0;OF=0;否则CF=1,OF=1 该怎么理解?什么叫高一半为低一半的符号扩展?如:mov al,0b4h ;al=b4h=-76dmov bl,11h ;b

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 09:23:30

汇编语言有符号乘法指令我对那个乘法指令IMUL不懂乘积的高一半为低一半的符号扩展则CF=0;OF=0;否则CF=1,OF=1 该怎么理解?什么叫高一半为低一半的符号扩展?如:mov al,0b4h ;al=b4h=-76dmov bl,11h ;b
汇编语言有符号乘法指令
我对那个乘法指令IMUL不懂
乘积的高一半为低一半的符号扩展则CF=0;OF=0;否则CF=1,OF=1 该怎么理解?什么叫高一半为低一半的符号扩展?
如:
mov al,0b4h ;al=b4h=-76d
mov bl,11h ;bl=11h=17d
imul bl ;ax=faf4h=-1292d,OF=CF=1

汇编语言有符号乘法指令我对那个乘法指令IMUL不懂乘积的高一半为低一半的符号扩展则CF=0;OF=0;否则CF=1,OF=1 该怎么理解?什么叫高一半为低一半的符号扩展?如:mov al,0b4h ;al=b4h=-76dmov bl,11h ;b
字节乘结果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(高四位是符号)和1010011111010B的实际值是不一样.
符号扩展则CF=0;OF=0;否则CF=1,OF=1 是一种约定或者说是标识,在处理结果时,计算机会根据CF、OF的状态判断是否有符号扩展,从而做出相应正确处理.

汇编语言有符号乘法指令我对那个乘法指令IMUL不懂乘积的高一半为低一半的符号扩展则CF=0;OF=0;否则CF=1,OF=1 该怎么理解?什么叫高一半为低一半的符号扩展?如:mov al,0b4h ;al=b4h=-76dmov bl,11h ;b 乘法指令中有无符号数相乘,那么有符号数有乘法吗?在单片机中, 汇编语言程序设计 用16位乘法指令完成32位无符号数的乘法(结果64位)使用MUL指令,完成双字无符号 求汇编语言指令, 汇编语言的TEST指令可不可以详细解释教我呢?最好有例子.THANKS! 单片机乘除类指令为什么Cy等于0?乘法为什么不会产生进位,加法指令中,进行无符号数运算ov没有意义 求用汇编语言写“2个32位有符号数乘法”的程序注明:有符号 汇编语言里jc指令时啥意思 如题.汇编语言中,按位取反的指令CPL是那个英文单词的缩写? 汇编语言的无符号数减法对于无符号数,sub指令是怎样形成cf标志位的?对于无符号数减法的电路实现,是否与有符号数一样?把减数按位求反加1再用加法实现? 高中数学必修3的程序中有这样一些字母,diff,mul,div怎样读 ,是什么单词的缩写。mul与pro都表示乘法指令吗。diu 与quo 都表示除法指令吗 乘法的符号有哪些 汇编语言的指令和操作数都采用符号形式(这句话对么)C语言是一种汇编语言(这句话对么) 我的世界指令 用arm常用指令实现R3=R1+R2*16如题,这种加法和乘法混合的运算该如何用指令表示呢 我的世界pe在seed里可以输指令,那么有哪些指令 8位原码数BBH扩展为16位应为?不要给我说指令,要说具体的算法,汇编语言 欧姆龙PLC脉冲指令,看看我这么理解对吗定位指令PLS2(887)指令,端口指定符的#1是不是指的是电路图中100.01那个端口啊?麻烦大家了,我刚接触这些伺服指令.