زیمنس کنترل

کد : 39317

نمایندگی زیمنس: استفاده از دستورات شیفت و چرخش (Shift and Rotate Instructions)

نمایندگی زیمنس: استفاده از دستورات شیفت و چرخش (Shift and Rotate Instructions)
الف) دستورات شیفت
دستورات شیفت برای جابجایی بیت به بیت محتویات آکومولاتور 1 به چپ یا راست بکار می­روند. شیفت به چپ معادل عمل ضرب است. شیفت به اندازه ی n  بیت به چپ ، معادل ضرب محتوای آکومولاتور در عدد 2n  است. به عنوان مثال ، با یک شیفت چپ عدد 2 برابر می­شود. شیفت به راست معادل عمل تقسیم است. شیفت به اندازه ی n بیت به راست معادل تقسیم محتوای آکومولاتور بر عدد 2n می­باشد. هب عنوان مثال ، با یک شیفت راست عدد نصف می­شود.
در هر بار شیفت چپ ، یک  0  از سمت راست وارد  بیت  اول آکومولاتور  شده و در  هر بار شیفت راست ، با توجه به مقدار بیت آخر ( یعنی بیت پانزدهم که علامت عدد را نشان می­دهد Sign Bit ) 0 یا 1 از سمت چپ وارد آخرین آکومولاتور  می­شود. به عبارت دیگر ، اگر عدد منفی باشد ، 1 و اگر عدد مثبت باشد ، 0 وارد آکومولاتور می­شود. در هر دو نوع شیفت ، آخرین بیت شیفت شده به CC1 ( از بیت های Status Word ) بار می­شود و بیت های OV , CCO   به صفر ریست می­شوند. می­توان از بیت CC1 برای پرش (Jump) استفاده کرد.
دستورات شیفت غیر مشروط هستند ، یعنی اجرای آنها به وضعیت بیت های Status Word بستگی ندارد. این دستورات پس از اجرا بر  RLO  تاثیر نمی­گذارند . وضعیت Status Word برای تمام دستورات شیفت بصورت زیر است :
نمایندگی زیمنس استفاده از دستورات شیفت و چرخش (Shift and Rotate Instructions)1
زیمنس کنترل فروشنده تجهیزات زیمنس با بهترین کیفیت ممکن
 
دستورات شیفت عبارتند از :
      SSI Shift Sign Integer (16-bit)      
SSD Shift Sign Double Integer (32-bit)      
     SLW Shift Left Word (16-bit)      
SRW Shift Right Word (16-bit)      
SLD Shift Left Double Word (32-bit)      



ب) دستورات چرخش
دستورات Rotate برای چرخش بیت به بیت محتویات آکومولاتور 1 به چپ یا راست بکار می روند. فرق این دستورات با دستورات شیفت این است که در Shift از یکطرف 0 وارد آکومولاتور شده و جایگزین اولین یا آخرین بیت می گردد ، ولی در Rotate آخرین بیت بجای اولین بیت می نشیند و از بیرون چیزی وارد آکومولاتور نمی شود. آخرین بیت چرخش داده شده به CC1 ( از بیت های Status Word ) بار می شود و بیت های CC0 و OV به صفر ریست می شوند. میتوان از بیت CC1 برای پرش (Jump) استفاده کرد.
 
دستورات چرخش عبارتند از :
RLD Rotate Left Double Word (32-bit)     
RRD Rotate Right Double Word (32-bit)     
RLDA Rotate ACCU1 Left via CC 1 (32-bit)     
RRDA Rotate ACCU1 Right via CC 1 (32-bit)