ايران ويج

نسخه‌ی کامل: دستورات گسترش داده
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
لطفا درباره دستورات گسترش داده در اسمبلی توضیح دهید.
خواهش می کنم.
در بعضی از محاسبات خصوصا تقسيم و ضرب نياز به افزايش اندازه داده از يک بايت به يک کلمه يا از يک کلمه به يک کلمه مضاعف است. اعداد بدون علامت با اضافه کردن صفر در سمت چپ به سادگی گسترش می يابند. ولی برای افزايش طول يک عدد علامتدار بايد بيت علامت در سمت چپ عدد تکرار شود. دستورات تبديل بيت علامت بسط می دهند.

CBW
دستور (convert byte to word) cbw محتوای بيت شماره هفت ثبات AL را در AX بسط می دهد. يعنی بيت شماره هفت ثبات AL را در کليه بيت های ثبات AH کپی می کند. درنتيجه مقدار رياضی بايت AL به يک کلمهAX گسترش پيدا می کند.

دستور هيچ عملوندی ندارد:

کد:
cbw
دستور cbw روی هيچيک از فلگ ها تاثير ندارد.

دستور cbw در محاسبه تقسيم يک بايتی کاربرد دارد.

CWD
دستور (convert word to double word) cwd محتوای بيت شماره پانزده ثبات AX را در کليه بيت های ثبات DX کپی می کند. درنتيجه مقدار رياضی AX به يک کلمه مضاعف در DX:AX گسترش پيدا می کند.

دستور هيچ عملوندی ندارد:

کد:
cwd
دستور cbw روی هيچيک از فلگ ها تاثير ندارد.

دستور cbw در عمليات تقسيم دوبايتی نقش بازی می کند.

مثال. برای گسترش مقدار 8 بيتی AL به يک مقدار 32 بيتی در DX:AX دو دستور پشت سر هم نوشته می شوند.
کد:
mov AL,85h
cbw
cwd
چون بيت علامت عدد 85h يک است تبديل به عدد FFFFFF85h می شود که 16بيت پايين آن در ثبات AX و 16بيت بالای آن در ثبات DX قرار می گيرد. يعنی AX=FF85h و DX=FFFFh می شود.