MUL是什么指令 各位高手,我想求教汇编中MUL指令的用法,我的单片机寄存器是8位的,现在有两个16位的数相乘?
各位高手,我想求教汇编中MUL指令的用法,我的单片机寄存器是8位的,现在有两个16位的数相乘?
mul指令是乘法指令。当mul用于乘法时:
1)两个乘法数:两个乘法数,8位或16位。如果是8位,则默认一个放在Al中,另一个放在8位寄存器或字节内存单元中;如果是16位,则默认一个放在ax中,另一个放在16位寄存器或内存寄存器字单元中。
2)结果:对于8位乘法,结果默认放在ax中;对于16位乘法,结果默认放在DX中,结果默认放在ax中。
Format:
mul reg
mul memory unit
可以用不同的寻址方式指定内存单元,例如:
mul byte PTR ds:[0
]表示:(AX)=(AL)*((ds)*16 0)
mul word PTR[BX Si 8
]表示:(AX)=(AX)*((ds)*16(Si)8)结果的低16位;(DX)=(AX)*((DS)*16(SI)8)结果的较高16位。
汇编mul怎么计算?
指令格式:mul SRC函数:如果SRC是字节操作数,则将Al中的无符号数与SRC相乘,得到16位结果并将其发送到ax,即:ax←(Al)*(SRC)。如果SRC是字操作数,则将ax中的无符号数与SRC相乘,得到32位结果,并将其发送给DX和ax,其中DX存储16位高位,ax存储16位低位,即ax←(AL)*(SRC)。受影响的标志位是CF和of(AF、PF、SF和ZF未定义)。如果乘积结果的上半部分等于零,则CF=of=0,否则CF=of=1。例如:mul、BL、mul ax。用法:mov a,ා01 mov B,ා02 mul AB是累加器a和累加器B的乘积。结果放入a。根据上述运算,a中的数字最好是2。MUL:80C51单片机系统中只有一条乘法指令。·Mul汇编语言无符号数乘法指令格式:Mul SRC运算:字节操作数:(AX)←(AL)*(SRC)字操作数:(DX,AX)←(AX)*(SRC)双字操作数:(EDX,eax)←(eax)*(SRC)MUL:80C51单片机系统中只有一条乘法指令:mul AB乘法指令的作用是将a和B中的两个8位无符号二进制数相乘。16位乘积的低8位存储在a中,高8位存储在B中。如果乘积较大大于256,即高位B不是0,则ov设置为1;否则,ov清除0,cy总是清除0。例如:设(a)=50h(80),(b)=0a0h(160)如果执行mulab,结果是:积为3200h(12800),(a)=00h,(b)=32H,(OV)=1,(CY)=0
mul指令是51单片机唯一的乘法指令,具体来说是mulab,它将累加器a和寄存器b的数据相乘,将低位存储到a中,高位存储到B中。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。