شاید از واژهء SUB تا کنون استفاده کرده باشید و با مفهوم آن آشنا باشید. در این مطلب این واژه را به صورت یک دستور در زبان برنامه نویسی اسمبلی  برایتان شرح خواهیم داد.

دستورالعمل subtract) sub) حاصل تفریق عملوند دوم از عملوند اول را محاسبه می کند. شکل کلی آن به صورت زیر است:

sub dest, src

دستورالعمل sub مقدار src را از dest کم کرده حاصل را در dest ذخیره می کند.

مشابه دستورالعمل add، دستور sub به صورت های زیر می تواند باشد:

sub register, register
sub register, memory
sub memory, register
sub register, immediate data
sub memory, immediate data
sub AX/AL, immediate data

دستور sub به طریق زیر فلگ ها را تغییر می دهد:

• اگر نتیجه صفر شود فلگ Zero یک می شود. این در حالتی اتفاق می افتد که عملوندها با هم برابر باشند.
• اگر نتیجه منفی شود فلگ sign یک می شود.
• اگر سرریزی رخ دهد فلگ overflow یک می شود.
• فلگ Auxiliary Carry در صورت نیاز برای عملیات BCD یک می شود.
• فلگ Parity با توجه به تعداد بیت های یک نتیجه تنظیم می شود.
• فلگ Carry در صورت بروز سرریزی در محاسبات بدون علامت یک می شود.

توجه داشته باشید که تفریق خاصیت جابجائی ندارد.

مثال. دستورات زیر عمل J := J – K; را انجام می دهند.

mov ax, K
sub J, ax

مثال. دستورات زیر عمل J := K – J; را انجام می دهند.

mov ax, K
sub ax, J
mov J, ax

بعد از عمل تفریق از مقادیر فلگ های Carry، Sign، Overflow و Zero می توان برای بررسی مساوی، نامساوی، بزرگتر یا کوچکتر بودن هر عملوند با دیگری استفاده کرد. جزئیات بیتشر در دستور cmp گفته خواهد شد.