因下面要用到,这里介绍一下mul指令,mul是乘法指令,使用mul做乘法的时候,注意以下两点。
(1)两个相乘的数:两个相乘的数,要么都是8位,要么都是16位。如果是8位,一个默认放在AL中,另一个放在8位reg或内存字节单元中;如果是16位,一个默认在AX中,另一个放在16位reg或内存字单元中。
(2)结果:如果是8位乘法,结果默认放在AX中;如果是16位乘法,结果高位默认在DX中存放,低位在AX中放。
格式如下:
mul reg mul 内存单
内存单元可以用不同的寻址方式给出,比如:
mul byte ptr ds:[0] ;含义:(ax)=(al)*((ds)*16+0) mul word ptr [bx+si+8] ;含义:(ax)=(ax)*((ds)*16+(bx)+(si)+8)结果的低16位 (dx)=(ax)*((ds)*16+(bx)+(si)+8)结果的高16位
(1)计算100*10
100和10小于255,可以做8位乘法,程序如下
mov al,100 mov bl,10 mul bl
结果:(ax)=1000(03E8H)
(2)计算 100*10000
100 小于 255,10000 大于 255,要做 16 位乘法
mov al,100 mov bx,10000 mul bx
结果:(ax)=4240H,(dx)=000FH,F4240H=1000000