⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asm_segment_c.cpp

📁 MCS51单片机的宏汇编器源程序。有需要的朋友请下载!
💻 CPP
字号:
//---------------------------------------------------------------------------
//-------- ASM_Segment_C.cpp ------------------------------------------------
//---------------------------------------------------------------------------

#include "ASM_Segment_H.h"
//---------------------------------------------------------------------------


//------ 析构器 -------------------------------------------------------------
ASM_Segment::~ASM_Segment()
{ for( register SegTriple* p;
          SegTrp;
             p = SegTrp->next, delete SegTrp, SegTrp = p ); // endfor
} // end destructor
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
void ASM_Segment::show()const
{ printf("\n======= Segment ========");
  printf("\n[SegID]=%4.4X", SegID);       // 段ID
  printf("\t[Name]=[%s]", (const char*)Name);   // 段名, 绝对段没有段名。
  printf("\t[SegType]=");                 // 段类型(0~4)
  switch(SegType)
  { case 0 : printf("CODE");  break;
    case 1 : printf("XDATA"); break;
    case 2 : printf("DATA");  break;
    case 3 : printf("IDATA"); break;
    case 4 : printf("BIT");   break;
    default: printf("?????");
  } // end switch
  printf("\t[RelType]=");                 // 再定位类型(0~5)
  switch(RelType)
  { case 0 : printf("ABSOLUTE");break;
    case 1 : printf("UNIT");    break;
    case 2 : printf("BITABLE"); break;
    case 3 : printf("INPAGE");  break;
    case 4 : printf("INBLOCK"); break;
    case 5 : printf("PAGE");    break;
    default: printf("?????");
  } // end switch
  printf("\n[SegBase]=%4.4X", SegBase);   // 段基址
  printf("\t[SegSize]=%4.4X", SegSize);   // 段大小
  printf("\t[SegLc]=%4.4X", SegLc);       // 段地址计数器
  printf("\tSegEmpty=%d", SegEmpty);      // 段空?
  printf("\tOverAble=%d", OverAble);      // 此段可覆盖?
  printf("\n[REGused]=%2.2X", SREGused);   // (#0~#3)可覆盖的段能用的寄存器组
  printf("\t[next]=%8.8X", next);

  printf("\t[SegTrp]");
  for(register SegTriple* p = SegTrp; p; p = p->next)
   { p->show(); } // end for
  printf("\n===========================");
} // end show
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
void SegTriple::show()const
{ if(begin==NULL) { printf("\n begin=NULL"); } // endif
  else
   { printf("\n  >>> begin=#%4.4d  end=#%4.4d ",
             begin->GetLineNo(), end->GetLineNo() ); } // end else
} // end show
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
// end ASM_Segment_C.cpp
//---------------------------------------------------------------------------
//               Written by JamesyFront.    ZLGmcu Dev.Co.Ltd.  2002.
//---------------------------------------------------------------------------


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -