در آموزش قبلی دستورات ضرب وتقسیم موجود در زبان اسمبلی را به شما معرفی کردیم.در این مطلب یکی از آن ها را یعنی دستور MUL  را مورد بررسی قرار خواهیم داد.

دستورالعمل multiply) mul) عمل ضرب بدون علامت را انجام می دهد. فرم کلی دستور به شکل زیر است:

mul src

دستور دارای یک عملوند است درحالیکه عمل ضرب به دو مقدار نیاز دارد. عملوند دیگر همیشه ثبات انباشتگر (AL/AX) درنظر می گرفته می شود.

حاصل ضرب ۸ بیت در ۸ بیت به بیش از یک بایت و ۱۶ بیت در ۱۶ بیت به بیش از دو بایت احتیاج دارد.

دستور ضرب بسته به اندازه تک عملوند خود به دو صورت ممکن است عمل کند:

• اگر عملوند یک بایتی باشد؛ عملوند را در AL ضرب کرده نتیجه را در AX ذخیره می کند.

(AX=AL*src(8

• اگر عملوند دوبایتی باشد؛ عملوند را در AX ضرب کرده نتیجه را در ثبات DX:AX قرار می دهد.

(DX:AX=AX*src(16

دستور mul به صورت های زیر می تواند باشد:

mul register
mul memory

توجه کنید که عملوند دستور mul نمی تواند یک داده فوری باشد.

دستور mul روی فلگ های Carry و Overflow را تاثیر می گذارد. بعد از اجرای دستور اگر نیمه بالای حاصلضرب برابر با صفر باشد فلگ های Carry و Overflow صفر می شوند در غیر اینصورت یک می شوند.

بقیه فلگ ها وضعیت نامعینی دارند خصوصا فلگ های Sign و Zero مقدار معنی داری ندارند. برای بررسی علامت و نتیجه صفر می توان فلگ های Carry و Overflow را بررسی کرد.