两个乘法的数量都是8位或16位。 8位乘法,16位乘法。
对于8位,一个数字默认存储在al中,另一个数字存储在其他8位寄存器或字节型存储器单元中。
mul 8位寄存器; 结果将保存在ax中
mul byte ptr ds:[0]; 结果将保存在ax中
16位时,一个数字默认存储在ax中,另一个数字存储在其他16位寄存器或字体存储器单元中。
mul 16位寄存器; 结果存储在dx、ax中
mul word ptr ds:[0]; 结果存储在dx、ax中
结果: 8位乘法运算得到16位,结果被存储在ax中
16位的乘法运算得到32位,下位16位被收纳在ax中,上位16位被收纳在dx中
assume cs:code,ds:data,ss : stackdatasegmentdd0dataendsstacksegmentstackdb 128 dup (0) stackendscodesesegmentststart 3128 参数call get_cube; 处理参数的mov es:[di 0],ax; call程序返回值mov es:[di 2],dxmov ax,4C00Hint 21H;==========================盒式逻辑get_cube:push bxmov ax,bxmul bxmul bxpop bxret;========================init _ reg 3360 movax、datamov ds、axretcodeendseend s 3330 0 dataendsstacksegmentstackdb 128 dup stack mov ss,axmov sp,128 call init _ regcallnumber _ cubemovax,4C00Hint 21H;========================number _ cube 3360 mov CX,8mov si,0mov di,16 cube : mov bx============================init _ reg 3360 movax、datamov ds、axmov es、axretcodeendseend