1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

آموزش اسمبلی(15)

شروع موضوع توسط hector2141 ‏15/10/12 در انجمن Assembly

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    [​IMG]
    در قسمت قبلی چند عملگر بیتی را دیدیم . در این قسمت هم این مبحث را دنبال میکنیم .


    عملگر Not :
    عملوند Not ارزش همه بیتهای یک بایت یا کلمه را برعکس میکند . یعنی تمام بیتهای ۱را ۰ا و تمام بیتهای ۰را ۱ا میکند . بعنوان مثال اگر AH حاوی مقدار ۱۰۱۰۱۱۰۱ باشد، بعد از اجرای Not Al ، محتوای AL بصورت ۰۱۰۱۰۰۱۰ خواهد بود.

    جدول ارزشی Not :

    Not X
    F | T
    T | F

    عملگر Neg :
    این اپراتور معمولا با Not اشتباه میشود در صورتی که کمتر شباهتی بین آنها وجود دارد . Neg ارزش عددی یک عدد علامتدار را برعکس میکند . یعنی یک عدد منفی را مثبت میکند و برعکس . در اعداد علامتدار ( همانطور که بعدا هم خواهیم دید )، اولین بیت سمت چپ ( بیت هشتم ) بیت علامت است . ۱ بودن آن نشاندهنده منفی بودن و ۰ بودن آن نشان دهنده مثبت بودن است .
    عملگر Neg با عکس کردن بیت علامت ، ارزش عدد را عکس میکند . این عملوند را در مبحث اعداد علامتدار مفصلا میخوانیم .

    مثال :
    بایت وضعیت صفحه کلید که مربوط به وضعیت کلید های کنترلی CapsLock/NumLock در بایوس های AT/PS2 در آدرس ۰۰۱۷h:0040h قرار دارد.
    بیتهای این بایت نشان میدهد که کدام کلید فعال است . ۱ بودن به معنی روشن بودن و ۰ به معنی خاموش بودن آن است . در مثال زیر بیت ششم برای کلید CapsLockرا ۱ میکنیم تا Capslock روشن شود .

    .MODEL SMALL
    .CODE
    ORG 100h
    START:
    PUSH ES
    MOVAX/0040h
    MOV ES/AX
    MOV AL/ES:[17h]
    OR AL/32
    MOV BYTE PTRES:[17h]/AL
    POP ES
    MOV AH/1
    INT