یکی دیگر از دستورات مربوط به ضرب و تقسیم در زبان اسمبلی دستور DIV است که در ادامه این مطلب این دستور را هم برایتان به طور کامل شرح خواهیم داد.
دستورالعمل (division) div برای تقسیم اعداد بدون علامت استفاده می شود. شکل کلی دستور به صورت زیر است:
div src
تک عملوند دستورالعمل div مقسوم علیه تقسیم است، مقسوم بستگی به سایز عملوند یکی از دو حالت زیر ممکن است باشد:
• اگر عملوند ۸بیتی باشد ثبات AX بر عملوند تقسیم می شود. خارج قسمت تقسیم در AL و باقیمانده در AH قرار می گیرند.
• اگر عملوند ۱۶بیتی باشد مقدار ۳۲بیتی DX:AX بر عملوند تقسیم می شود. خارج قسمت تقسیم در AX و باقیمانده در DX ذخیره می شوند.
برای تقسیم بدون علامت یک عدد ۸بیتی بر یک عدد ۸بیتی دیگر مقسوم باید گسترش داده شده ۱۶ بیتی شود. برای این کار مقسوم را در ثبات AL و مقدار صفر را در ثبات AH ذخیره کنید. سپس دستور div را بنویسید.
برای تقسیم بدون علامت یک عدد ۱۶بیتی بر یک عدد ۱۶بیتی دیگر باید مقسوم در ثبات AX و مقدار صفر در ثبات DX ذخیره شود.
دستور div به یکی از دو صورت زیر می تواند باشد. تقسیم بر عملوند فوری امکان ندارد و داده فوری باید در یکی از ثبات ها قرار گیرد.
div register
div memory
فلگ های Carry، Auxiliary carry، Overflow، Parity، Sign و Zero نامعین هستند.
نکته. اگر مقسوم علیه صفر باشد یا خارج قسمت بزرگتر از مقصد باشد خطا اتفاق می افتد و برنامه سقط می شود. معمولا پیغام “division by zero” یا “divide error” صادر می شود.
مثال. دستورات زیر حاصل عبارت J=K/M را محاسبه می کند. متغیرها ۸ بیتی و بدون علامت هستند.
mov AL, K
mov AH, 0
div M