450 likes | 595 Views
مجموعه دستورالعمل 8051. حسین منتظری کردی دانشکده مهندسی برق و کامپیوتر دانشگاه صنعتی نوشیروانی بابل پاییز 91. دستورات حسابی: 24 کدعملیاتی حسابی در گروههای زیر دستهبندی شدهاند: انواع آدرسدهی برای این دستورات شامل: ثباتی، مستقیم، غیرمستقیم، و بیواسطه
E N D
مجموعه دستورالعمل 8051 حسین منتظری کردی دانشکده مهندسی برق و کامپیوتر دانشگاه صنعتی نوشیروانی بابل پاییز 91
دستورات حسابی: • 24 کدعملیاتی حسابی در گروههای زیر دستهبندی شدهاند: • انواع آدرسدهی برای این دستورات شامل: ثباتی، مستقیم، غیرمستقیم، و بیواسطه • 8051 دارای 4 پرچم محاسباتی؛ بیت نقلی (C)، نیم بیت نقلی (AC)، سرریز حسابی (OV)، و بیت توازن (P) • سه پرچم C، AC، و OV اصلاح توسط دستورات حسابی
آخرین دستور تاثیرگذار روی پرچم تعیینکننده مقدار نهایی پرچم • تاثیرپذیری پرچم توازن با هر دستور جاری، P= 1 اگر تعداد 1 های انباره فرد باشد و در غیر اینصورت P= 0 خواهدبود.
دستورات جمع • ADD A, <src-byte> • افزودن یک بایت از مبداء به انباره و قراردادن نتیجه در انباره، نشاندارشدن C و AC اگر یک بیت خروجی از بیتهای 7 یا 3 وجود داشتهباشد. بهنگام جمع بدون علامت C مبین یک سرریز میباشد. • نشاندارشدن OV درصورت خارجشدن رقم نقل از بیت 6 و عدم خروج از بیت 7؛ یا خروج از بیت 7 و عدم خروج از بیت 6؛ OV در جمع علامتدار بیانگر تولید حاصلمنفی از جمع دو عدد مثبت و حاصل مثبت از جمع دو عدد منفی • مثال: انباره حاوی C3H و ثبات R0 حاوی AAH میباشد، اجرای دستور زیر موجب تغییر مقدار انباره به 6DH و پرچمها بصورت زیر میشود: • ADD A, R0 • C= 1, AC= 0, OV= 1 • P= 1
دستور جمع با رقم نقلی • ADDC A, <src-byte> • افزودن یکبایت از مبداء بهمراه بیتنقلی به انباره و قراردادن نتیجه در انباره، نشاندارشدن C و AC اگر یک بیت خروجی از بیتهای 7 یا 3 وجود داشتهباشد. بهنگام جمع بدون علامت C مبین یک سرریز میباشد. • نشاندارشدن OV درصورت خارجشدن رقم نقل از بیت 6 و عدم خروج از بیت 7؛ یا خروج از بیت 7 و عدم خروج از بیت 6؛ OV در جمع علامتدار بیانگر تولید حاصلمنفی از جمع دو عدد مثبت و حاصل مثبت از جمع دو عدد منفی • مثال: انباره حاوی C3H و ثبات R0 حاوی AAH میباشد، همچنین بیتنقلی از دستور قبلی نشاندار شدهاست. اجرای دستور زیر موجب تغییر مقدار انباره به 6EH و پرچمها بصورت زیر میشود: • ADDC A, R0 • C= 1, AC= 0, OV= 1, P= 1
دستورات تفریق (با بیت قرضی) • SUBB A, <src-byte> • تفریق یک بایت از مبداء از انباره و قراردادن نتیجه در انباره، نشاندارشدن C (بیتقرضی) اگر یک بیت قرضی برای بیت 7 نیاز باشد، و اگر C از قبل نشاندار باشد، آنگاه یک بیت قرضی برای عمل تفریق لحاظ میشود. • نشاندارشدن AC اگر یک بیت قرضی برای بیت 3 نیاز باشد. نشاندارشدن OV اگر یک بیت قرضی برای بیت 6 نه 7، و یا بیت 7 نه 6 نیاز باشد.
دستورات یکی اضافهکن و یکی کمکن • INC <byte> • یک واحد به بایت متغیر اضافهکن، هیچ پرچمی اثر نمیپذیرد.
DEC <byte> • یک واحد از بایت متغیر کمکن، هیچ پرچمی اثر نمیپذیرد.
INC DPTR • یک واحد به متغیر 16 بیتی اضافهکن، هیچ پرچمی اثر نمیپذیرد.
دستورات ضرب و تقسیم • MUL AB • ضرب دو عدد بدون علامت 8 بیتی انباره و ثبات B، و قراردادن بایت پایین نتیجه در انباره و بایت بالا در ثبات B؛ نشاندارشدن OV اگر جواب بیش از یک بایت باشد. پرچم نقلی همیشه پاک میشود.
DIV AB • تقسیم دو عدد بدون علامت 8 بیتی انباره بر ثبات B، و قراردادن خارجقسمت در انباره و باقیمانده در ثبات B؛ بازنشانشدن C و OV؛ نشاندارشدن OV اگر B= 00H باشد و A و B در اینحالت تعریف نشده میباشند.
تنظیم دهدهی • DA A • تنظیمدهدهی انباره برای عمل جمع دو عدد 8 بیتی BCD و تولید دو رقم 4 بیتی معتبر در شکل BCD
اگر بیت 0 تا 3 انباره بزرگتر از 9 باشد و یا اگر AC یک باشد، آنگاه 06H به انباره جهت تولید رقم BCD صحیح در نیم بایت پایین اضافه میشود. • نشاندارشدن C اگر یک بیت نقلی از 4 بیت مرتبه پایین به 4 بیت مرتبه بالا منتشر شود، در غیر اینصورت C هرگز پاک نمیشود. • درصورت نشاندارشدن C بعداز تنظیم نیم بایت پایین، و یا بزرگتر بودن نیم بایت بالا از 9 آنگاه 60H به نیم بایت بالا افزوده میشود. • تنظیم دوباره C با این جمع درصورت خروج بیت نقلی، وگرنه این پرچم پاک نمیشود. پرچم C بیانگر بزرگتربودن جواب جمع دو عدد اولیه BCD از 100 و پرچم OV تاثیر نمیپذیرید. • بسته به مقدار اولیه انباره یا PSW، اضافهشدن 00H، 06H، 60H، و یا 66H به انباره • این دستور موجب تبدیل عدد هگزادسیمال به BCD نمیشود. • این دستور قابل اعمال به تفریق BCD نمیباشد.
دستورات منطقی شامل AND، OR، XOR، NOT، و دستورات چرخش • 4 آدرسدهی: ثباتی، مستقیم، غیرمستقیم، و بیواسطه • عدم تاثیرگذاری روی پرچمها بجز دستورات مبتنیبر پردازش بیت • ANL <dest-byte>, <src-byte> • انجام AND بیت به بیت بین مبداء و مقصد و ذخیره جواب در مقصد
ORL <dest-byte>, <src-byte> • انجام OR بیت به بیت بین مبداء و مقصد و ذخیره جواب در مقصد
XRL <dest-byte>, <src-byte> • انجام XOR بیت به بیت بین مبداء و مقصد و ذخیره جواب در مقصد
CPL A CLR A
دستورات چرخش: • RL A • 8 بیت انباره یک بیت به چپ میچرخد، بیت 7 در جای بیت صفر قرار میگیرد. هیچ پرچمی تاثیر نمیپذیرد.
RLC A • 8 بیت انباره و بیت نقلی با هم یک بیت به چپ میچرخند، بیت 7 در جای بیت نقلی و بیت نقلی جای بیت صفر قرار میگیرد. بغیر از بیت نقلی هیچ پرچمی تاثیر نمیپذیرد.
RR A • 8 بیت انباره یک بیت به راست میچرخد، بیت صفر در جای بیت 7 قرار میگیرد. هیچ پرچمی تاثیر نمیپذیرد.
RRC A • 8 بیت انباره و بیت نقلی با هم یک بیت به راست میچرخند، بیت صفر در جای بیت نقلی و بیت نقلی جای بیت 7 قرار میگیرد. بغیر از بیت نقلی هیچ پرچمی تاثیر نمیپذیرد.
SWAP A • 4 بیت مرتبه پایین و بالای انباره با هم تعویض میشوند. هیچ پرچمی تاثیر نمیپذیرد. • دستورات پردازش بیت: • این دستورات از بیت نقلی بعنوان انباره تک بیت استفاده میکنند. • مبداء و مقصد در این دستورات فقط مکان بیتهای آدرسپذیر میباشند. • هیچ پرچمی بجز بیت نقلی تاثیر نمیپذیرد، مگر اینکه آن پرچم آدرس داده شود.