32位模式下整数乘法可以实现32、16或8位的操作,64位下还可以使用64位操作数。
MUL执行无符号乘法,IMUL执行有符号乘法
MUL:无符号数乘法
32 位模式下,MUL(无符号数乘法)指令有三种类型:
执行 8 位操作数与 AL 寄存器的乘法;
执行 16 位操作数与 AX 寄存器的乘法;
执行 32 位操作数与 EAX 寄存器的乘法
MUL 指令中的单操作数是乘数。下表按照乘数的大小,列出了默认的被乘数和乘积。由于目的操作数是被乘数和乘数大小的两倍,因此不会发生溢岀,换句话说,两个8位二进制数的乘积不会超过16位
如果乘积的高半部分不为零,则 MUL 会把进位标志位和溢出标志位置 1。
.386 .model flat,stdcall .stack 4096 Include Irvine32.inc .data val2 WORD 0100h .code main PROC mov ax,2000h mul val2 ;DX:AX = 00200000h, CF = 1 exit main ENDP END main