汇编乘法指令MUL到底怎么用 比如我要做8的四次方,MUL四次后答案不对,因为AL*8然后答案放在AX中,中间8乘了两次后答案AX=100,这时候AL=0.再乘的时候就是0了,怎么用这个。
计算机 汇编 乘法指令MUL 意义:src上的数与AL上的数相乘,保存在AX中。使用:在八位指令下,若a与b要相乘,可以将其中一个数保存在AX中,具体指令如下:MOV AX,aMUL b使用完此指令,两数结果保存在AX中。扩展资料目的地址传送指令1、LEA 装入有效地址.例:LEA DX,string;把偏移地址存到DX.2、LDS 传送目标指针,把指针内容装入DS.例:LDS SI,string;把段地址:偏移地址存到DS:SI.3、LES 传送目标指针,把指针内容装入ES.例:LES DI,string;把段地址:偏移地址存到ES:DI.4、LFS 传送目标指针,把指针内容装入FS.例:LFS DI,string;把段地址:偏移地址存到FS:DI.参考资料来源:-汇编指令
汇编语言有符号乘法指令 字节乘结果16位,存于AX中,高8位AH低8位AL字乘结果为32位存于DXAX中,高16位DX,低16位AX“高一半为低一半的符号扩展”的说法不确切,应该说“高位e799bee5baa6e4b893e5b19e31333431373334是低位的符号扩展”,低位是指积的值部分,高位指积的符号部分。常常是字节乘的结果不足16位,字乘的结果不足32位,多出的位怎么办?就进行符号扩展,由于多出的位是高位,所以叫高位符号扩展。比如你的例子,是字节乘。imulbl操作为ALBL结果存于AX中,其中(AH)FAH,(AL)F4H结果的二进制式为1111010011111010B显然数值部分是010011111010,加上一位符号位是不足16位的,而符号部分是1111有四位,并不是我们习惯的一位,这就是进行了高位符号扩展的结果。为什么要进行扩展?是因为结果的位数在指令中是一定的,计算机不可能根据我们结果的实际位数而调整结果的位数,所以不足的位必须补足,这样高位扩展符号的做法是即能够满足结果位数约定,又不影响结果值的正确性的。高位扩展符号的原则是正数填0负数填1。你自己可以演算一下,1111010011111010B(高四位是符号)和1010011111010B的实际值是不一样。符号扩展则CF=0;OF=0;否则CF=1,OF=1是一种约定或者说。