AND
Assembly is real open source .
and
دستور and
Usage: AND dest,src Modifies flags: CF OF PF SF ZF (AF undefined)
کاربرد : از چپ به راست : دستور and ، عملوند مقصد (dest) ، عملوند مبدا (src)
دستور and بجز پرچم AF سایر پرچمها را اصلاح می کند .
دستور and جزو دستورات منطقی ( لاجیکال ) است که می توان از ان برای ماسک گذاری روی بیتها استفاده نمود و مستقیما با تک تک بیتهای 0 و 1 کار کرد .
Performs a logical AND of the two operands replacing the destination with the result.
دستور and یک عملیات and منطقی دو عملوند را با جایگزینی مقصد با نتیجه ، اجرا می نماید .
Bitwise AND
دستور and منطقی (عقلانی ) .
در مورد عبارات زیر در اولین فرصت توضیح خواهم داد :
البته در پست adc توضیحات مختصری در مورد عبارات مشابه با اینها، به زبان انگلیسی نوشته ام . می توانید علی الحساب به پست adc مراجعه فرمایید :
بروزرسانی :
برای کشف دقیق مفهوم این عبارات به پست add مراجعه فرمایید . در پست add به میزان 99 درصد توانستم این چیزهای نامفهوم را رمزگشایی نمایم .
همچنین در پست add یکسری نکات جالب را در برخی زمینه ها و یکسری ایده های غیرمستقیم همراه با یکسری انتقادات تند و شدید را نوشته ام .
پست add را حتما بخوانید تا هم به رمزگشایی 99 درصدی دست یابید و هم با ایده ها و انتقادات و پیشنهادات ام آشنا شوید .
AND r/m8,reg8 ; 20 /r [8086]
AND r/m16,reg16 ; o16 21 /r [8086]
AND r/m32,reg32 ; o32 21 /r [386]
AND reg8,r/m8 ; 22 /r [8086]
AND reg16,r/m16 ; o16 23 /r [8086]
AND reg32,r/m32 ; o32 23 /r [386]
AND r/m8,imm8 ; 80 /4 ib [8086]
AND r/m16,imm16 ; o16 81 /4 iw [8086]
AND r/m32,imm32 ; o32 81 /4 id [386]
AND r/m16,imm8 ; o16 83 /4 ib [8086]
AND r/m32,imm8 ; o32 83 /4 ib [386]
AND AL,imm8 ; 24 ib [8086]
AND AX,imm16 ; o16 25 iw [8086]
AND EAX,imm32 ; o32 25 id [386]
AND performs a bitwise AND operation between its two operands (i.e. each bit of the result is 1 if and only if the corresponding bits of the two inputs were both 1), and stores the result in the destination (first) operand. The destination operand can be a register or a memory location. The source operand can be a register, a memory location or an immediate value.
دستور and اجرا می کند یک عملیات ( حرف ربط ) " و" بیتی ( منطقی ) بین دو عملونداش . ( هر بیت نتیجه برابر با 1 خواهد بود اگر و تنها اگر بیتهای نظیر به نظیر دو ورودی هردو برابر با 1 باشند . ) ، و نگه می دارد نتیجه را در عملوند مقصد (عملوند اول از سمت چپ ) . عملوند مقصد می تواند یک رجیستر یا مکان حافظه باشد . عملوند مبدا می تواند یک رجیستر ، یک مکان حافظه یا یک مقدار فوری ( عدد ) باشد .
The MMX instruction PAND performs the same operation on the 64-bit MMX registers.
دستورالعمل PAND ( از خانواده ی MMX ) همان عملیات را روی رجیسترهای 64 بیتی MMX اجرا می نماید .
+
+
سورس برنامه ی نمونه برای اسمبلر RosAsm :
نکته : عباراتی همچون Do و On و Do_Loop ماکرو می باشند و هیچکدامشان دستور زبان اسمبلی نیستند .
اسمبلر RosAsm یک اسمبلر کاملا خالص است و هیچ ماکرویی را از قبل در بدنه ی خود ندارد و شما باید خودتان برای عباراتی این چنینی ماکرو بسازید . هرچند طراح این اسمبلر تعدادی ماکرو ساخته است اما کارکردن با ماکرو در اسمبلر RosAsm بسیار سخت و خسته کننده است لذا من خودم شخصا همیشه از دستورات خالص اسمبلی سطح پایین عمودی استفاده می کنم تا به ماکرو محتاج نباشم و نیازی به تعریف ماکرو بصورت دستی یا سرو کله زدن با ماکروهای ناقص نداشته باشم و البته از زبان اسمبلی دور نشوم .
در اسمبلر RosASm شما می توانید به روشهای مختلف ، دستورات را بنویسید مثل روش افقی که در اینجا ملاحظه می فرمایید .
اما من شخصا معتقدم که این روش مانع از کامنت نویسی شده و مانع از فهم دستورات اسمبلی می گردد لذا خودم شخصا به روش سنتی یعنی اسمبلی ستونی برنامه می نویسم تا بتوانم جلوی تک تک دستورات اسمبلی ، کامنت و توضیح بنویسم .
main:
std ; set direction flag
Do
mov al bl | and al 0F | add al '0'
On al > '9', add al 7
stosb | shr ebx 4
Do_Loop
cld ; clear direction flag
ret
متاسفانه بدلیل عدم وجود عناصر لازم که برای ساخت ماکرو ضروری می باشند ، نتوانستم این کد را به اسمبلی خالص سطح پایین ترجمه نمایم .
این کد فعلا در اسمبلر ، قابل اجرا نیست زیرا عناصر سازنده ی ماکروها را باید در ابتدای سورس برنامه بنویسیم که من به این عناصر دسترسی ندارم . اما شاید بتوانم با دیس اسمبلی ، این مشکل را برطرف نموده و سورس خالص و تمیز اسمبلی را بدون هیچ مشکلی کامپایل و بیلد نمایم .
در مجموع ، شاهد سهل انگاریهای فراوان از طرف طراح این اسمبلر هستم که کار را دشوار کرده است .
من برای اینکه از برنامه ام جلو بیفتم هر روز تعداد 10 پست را بصورت خام و بدون ترجمه منتشر می کنم و بعد در اولین فرصت و البته به تدریج ، تک تک پستها را ویرایش و ترجمه خواهم کرد . بهرحال من از پشتکار بالایی در کار با کامپیوتر برخوردار هستم و خسته نمی شوم و به امید خدا شاخ غول اسمبلی را می شکنم . انشاء ا....
+
+
وحید محمدی - وبلاگ وحیدمی .