تماس درباره   صفحه اصلی
  زبان اسمبلي > دستورات اسمبلي 8086> دستورات منطقی  
 
 

دستورات منطقی


دستورات منطقی 8086 عمليات منطقی and، or، xor و not را به صورت بيت به بيت روی عملوندها انجام می دهند.

AND
OR
XOR
NOT
TEST
دستکاری بيت ها


AND

دستورالعمل and عمل and منطقی را روی دو عملوند خود انجام می دهد و نتيجه را در عملوند اول ذخيره می کند. فرم کلی آن به صورت زير است:

and dest, src

طبق جدول زير عمل and روی بيت های متناظر دو عملوند انجام می شود. هر بيت نتيجه در صورتی يک است که بيت های متناظر هر دو عملوند يک باشند در غير اينصورت صفر می شود.

A
B
A and B
1 1 1
1 0 0
0 1 0
0 0 0

دستورالعمل and به شکل های زير می تواند بکار برود:

and register, register
and memory, register
and register, memory
and register, immediate data
and memory, immediate data
and /AL, immediate data

دستورالعمل and روی فلگ های زير تاثير می گذارد:

• فلگ carry و overflow را صفر می کند.
• فلگ های zero، sign و parity با توجه به نتيجه تاثير می پذيرند.

فلگ zero وقتي دو عملوند در هيچ مکانی بيت مشابه نداشته باشند يک می شود.


مثال

mov AX, C123h
and AX, 82F6h

AND Example

دستورالعمل and برای محاسبه سريع باقيمانده يک عدد بر توانی از 2 می تواند استفاده شود. برای پيدا کردن باقيمانده عملوندی بر مقدار 2n کافيست and عملوند با مقدار 2n-1 محاسبه شود.


مثال. دستور زير باقيمانده بر عدد 8 را محاسبه می کند.

and AX, 7


OR

دستورالعمل or عمل or منطقی را روی عملوندهای خود انجام می دهد. فرم کلی آن به صورت زير است:

or dest, src

عمل or، طبق جدول زير، روی عملوندها بيت به بيت انجام می گيرد. هر بيت نتيجه دستور or در صورتی صفر است که بيت های متناظر هر دو عملوند صفر باشند در غير اينصورت يک می شود.

A
B
A or B
1 1 1
1 0 1
0 1 1
0 0 0

دستورالعمل or مشابه عمل and روی فلگ های Carry، Zero، Sign، Overflow و Parity تاثير می گذارد. فلگ zero وقتی يک می شود که هردو عملوند صفر باشند.

عملوندهای دستورالعمل or مشابه دستورالعمل and می تواند ثبات، حافظه يا داده فوری باشد.


مثال.

mov AX, C123h
or AX, E831h

OR Example

XOR

دستورالعمل xor عمل xor منطقی را روی بيت های دو عملوند خود انجام می دهد و نتيجه را در عملوند اول ذخيره می کند. فرم کلی آن به صورت زير است:

xor dest, src

هر بيت نتيجه دستورالعمل xor مطابق جدول زير تنظيم می شد. بيت نتيجه زمانی صفر است که هردو بيت عملوند مشابه هم باشند درغير اينصورت يک می شود.

A
B
A xor B
1 1 0
1 0 1
0 1 1
0 0 0

دستورالعمل xor مشابه عمل and روی فلگ ها تاثير می گذارد. اگر هردو عملوند دستورالعمل مساوی باشند نتيجه صفر می شود و در نتيجه فلگ zero يک می شود.

برای صفر کردن ثبات ها می توان از دستورالعمل xor register, register استفاده کرد که کوتاهتر از دستورالعمل mov register,0 است.


مثال.

mov AX, C123h
xor AX, E831h

XOR Example

NOT

دستورالعمل not مکمل يک عملوند خود را محاسبه و در آن ذخيره می کند. فرم کلي آن به صورت زير است:

not dest

دستورالعمل not بيت های عملوند را عکس می کند؛ صفرها را به يک و يک ها را به صفر تبديل می نمايد.

دستورالعمل not به يکی از دو حالت زير می تواند استفاده شود:

not register
not memory

دستورالعمل not روی هيچکدام از فلگ ها تاثير ندارد.


مثال.

mov AX, C123h
not

NOT Example

TEST

دستورالعمل test مشابه and است و عمل and منطقی را روی دو عملوند خود انجام می دهد با اين تفاوت که نتيجه را جائی ذخيره نمی کند.

test dest, src

فلگ های Carry، Zero، Sign، Overflow و Parity مشابه دستورالعمل and تاثير می پذيرند.

دستورالعمل test برای بررسی يک بودن بيتی می تواند استفاده شود.


مثال. دستور زير مقدار 1 را با ثبات AL به طور منطقی and می کند. اگر بيت شماره 0 ثبات AL صفر باشد نتيجه دستور صفر شده و فلگ zero برابر با يک می شود در غير اينصورت فلگ zero صفر می شود. بررسی فلگ zero بعد از اين اجرای دستور نشان می دهد که بيت صفر ثبات AL يک بوده است يا خير.

test AL, 1

مثال. دستور زيرا برای بررسی بيت های 0، 2 و 8 ثبات DX می تواند استفاده شود. اگر همگی صفر باشند فلگ zero يک می شود.

test DX, 105h


دستکاری بيت ها

از دستورات منطقی برای دستکاری بيت های معينی از عملوند مقصد بدون تاثير روی بيت های ديگر آن می استفاده می شود. برای اين منظور يک ماسک ساخته می شود. يک ماسک مقدار است که بيت های مشخصی از يک عملوند را صفر يا يک می کند بدون اينکه نغييری روی بقيه بيت های آن داشته باشد.

صفر کردن بيت ها با دستورالعمل AND

با دقت در جدول and می توان مشاهده کرد که نتيجه and عدد صفر با هر بيتی برابر با صفر می شود. اگر عدد يک با بيتی and شود نتيجه همان بيت می شود. از اين خاصيت برای صفر کردن بيت های انتخابی يک مقدار بدون تاثير روی بقيه بيت ها می توان استفاده کرد.

مثال. درمثال زير بيت شماره 5 ثبات صفر می شود و بقيه بيت ها بدون تغيير باقی می مانند.

mov AX, C123h
and AX, FFDFh

يک کردن بيت ها با دستورالعمل OR

دستورالعمل or را می توانيد برای يک کردن بيت های انتخابی يک عدد بکار ببريد.

مثال. درمثال زير بيت شماره 3 ثبات يک می شود و بقيه بيت ها بدون تغيير باقی می مانند.

mov AX, C123h
or AX, 8


برنامه تغيير حالت کاراکتر توسط دستورات اسمبلی در زبان C


 


 


صفحه اصلی| PDF| درباره| تماس