سوال احتمالا اینه، چطور با استفاده از شیفت و CWD مقدار 16 بیتی علامت دار داخل AX رو در ترکیب 32 بیتی DX:AX دو برابر کرد.
اگر فرض رو بر این بگیرید که مقدار اولیه یک عدد علامت دار در AX ئه، ابتدا با CWD اون بیت علامت رو روی همه بیت های DX تکثیر می کنید (اگر منفی باشه تمامی بیت ها 1 و اگر غیر منفی باشه همه بیت ها 0 میشه) و بعد با SHL AX, 1 مقدار AX رو دو برابر می کنید (بیت علامت اش حذف میشه) و DX:AX میشه دو برابر مقدار اولیه AX
اما اگر فرض اولیه بر این باشه که مقدار علامت دار نیست یا فرض اولیه این باشه که مقدار در DX:AX ئه، نباید از CWD استفاده بشه، اولا چون برای اعداد علامت دار طراحی شده، و ثانیا چون مقدار قبلی داخل DX رو از بین میبره. اگر بهتون گفته شده از CWD استفاده کنید پس باید فرض بر این باشه که مقدار اولیه علامت دار در AX قرار داره، نه DX:AX و DX صرفا برای خروجی استفاده میشه.