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

📄 asm.cpp

📁 模拟了tec2000的所有功能
💻 CPP
📖 第 1 页 / 共 5 页
字号:
   i1=int(dear/1000);
   i2=int((dear-i1*1000)/100);
   i3=int((dear-i1*1000-i2*100)/10);
   i4=dear-i1*1000-i2*100-i3*10;
   return i1*4096+i2*256+i3*16+i4; 
}



WORD Casm::trahexdec(WORD dear)
{
   
   int i1,i2,i3,i4;
   i1=int(dear/4096);
   i2=int((dear-i1*4096)/256);
   i3=int((dear-i1*4096-i2*256)/16);
   i4=dear-i1*4096-i2*256-i3*16;
   return i1*1000+i2*100+i3*10+i4;
}

void Casm::asm1(WORD &temp,char *p,WORD id)
{
  
  int errorsign=1;char * dearp=p;
  while(dearp[0]==' ')dearp++;
  if(id==0x8100)
  {
   if((dearp[0]!='r')&&(dearp[0]!='R'))errorsign=0;
   dearp++;
   if(trahexdec(getdata(dearp))>15||trahexdec(getdata(dearp))<0)errorsign=0;
   while(dearp[0]!=','&&dearp[0]!='\0')
   {
	  if(!((dearp[0]==' ')||(dearp[0]=='0')||(dearp[0]=='1')||(dearp[0]=='2')||(dearp[0]=='3')||(dearp[0]=='4')||(dearp[0]=='5')||(dearp[0]=='6')||(dearp[0]=='7')||(dearp[0]=='8')||(dearp[0]=='9')))
		     errorsign=0;
      dearp++;
   }
   if(dearp[0]=='\0')errorsign=0;
   dearp++;
   while(dearp[0]==' ')dearp++;
   if(dearp[0]!='[')errorsign=0;
   dearp++;
   while(dearp[0]==' ')dearp++;
   if((dearp[0]!='r')&&(dearp[0]!='R'))errorsign=0;
   dearp++;
   if(trahexdec(getdata(dearp))>15||trahexdec(getdata(dearp))<0)errorsign=0;
   while(dearp[0]!=']'&&dearp[0]!='\0')
   {
	  if(!((dearp[0]==' ')||(dearp[0]=='0')||(dearp[0]=='1')||(dearp[0]=='2')||(dearp[0]=='3')||(dearp[0]=='4')||(dearp[0]=='5')||(dearp[0]=='6')||(dearp[0]=='7')||(dearp[0]=='8')||(dearp[0]=='9')))
		     errorsign=0;
      dearp++;
   }
   if(dearp[0]=='\0')errorsign=0;
   dearp++;
   while(dearp[0]!='\0')
   {
      if(dearp[0]!=' ')
	  {errorsign=0;}
      dearp++;
   }
   } 
  else
  {
   if(id==0x8300)
   {
      if(dearp[0]!='[')errorsign=0;
	  dearp++;
      while(dearp[0]==' ')dearp++;
      if((dearp[0]!='r')&&(dearp[0]!='R'))errorsign=0;
      dearp++;
      if(trahexdec(getdata(dearp))>15||trahexdec(getdata(dearp))<0)errorsign=0;
      while(dearp[0]!=']'&&dearp[0]!='\0')
	  {
	      if(!((dearp[0]==' ')||(dearp[0]=='0')||(dearp[0]=='1')||(dearp[0]=='2')||(dearp[0]=='3')||(dearp[0]=='4')||(dearp[0]=='5')||(dearp[0]=='6')||(dearp[0]=='7')||(dearp[0]=='8')||(dearp[0]=='9')))
		     errorsign=0;
          dearp++;
	  }
      if(dearp[0]=='\0')errorsign=0;
      dearp++;
      while(dearp[0]==' ')dearp++;
      if(dearp[0]!=',')errorsign=0;
	  dearp++;
      while(dearp[0]==' ')dearp++;
      if((dearp[0]!='R')&&(dearp[0]!='r'))errorsign=0;
	  dearp++;
      if(trahexdec(getdata(dearp))>15||trahexdec(getdata(dearp))<0)errorsign=0;
      while(dearp[0]!='\0')
	  {
	      if(!((dearp[0]==' ')||(dearp[0]=='0')||(dearp[0]=='1')||(dearp[0]=='2')||(dearp[0]=='3')||(dearp[0]=='4')||(dearp[0]=='5')||(dearp[0]=='6')||(dearp[0]=='7')||(dearp[0]=='8')||(dearp[0]=='9')))
		     errorsign=0;
          dearp++;
	  }
      }
   else
   {
      if((dearp[0]!='r')&&(dearp[0]!='R'))errorsign=0;
      else
	  {
         dearp++;
	     if(trahexdec(getdata(dearp))>15||trahexdec(getdata(dearp))<0)errorsign=0;
	 
	     while(dearp[0]!=','&&dearp[0]!='\0')
		 {
	        if(!((dearp[0]==' ')||(dearp[0]=='0')||(dearp[0]=='1')||(dearp[0]=='2')||(dearp[0]=='3')||(dearp[0]=='4')||(dearp[0]=='5')||(dearp[0]=='6')||(dearp[0]=='7')||(dearp[0]=='8')||(dearp[0]=='9')))
		     errorsign=0;
            dearp++;
		 }
         if(dearp[0]=='\0')errorsign=0;
	     dearp++;
         while((dearp[0]!='r')&&(dearp[0]!='R')&&(dearp[0]!='\0'))
		 {
		    if(!(dearp[0]==' '))
			{errorsign=0;}
		    dearp++;
		 }
         if(dearp[0]=='\0')errorsign=0;
         dearp++;
         if(trahexdec(getdata(dearp))>15||trahexdec(getdata(dearp))<0)errorsign=0;

	     while((dearp[0]==' ')||(dearp[0]=='0')||(dearp[0]=='1')||(dearp[0]=='2')||(dearp[0]=='3')||(dearp[0]=='4')||(dearp[0]=='5')||(dearp[0]=='6')||(dearp[0]=='7')||(dearp[0]=='8')||(dearp[0]=='9'))dearp++;
	     while(dearp[0]!='\0')
		 {
           if(dearp[0]!=' ')
		   {errorsign=0;}
           dearp++;
		 }
	  }
   }
  }

  if(errorsign==1)
  {
  WORD TEMP1,TEMP2; 
  while(p[0]!='R')p++;
  p++;
  TEMP1=trahexdec(getdata(p));
  while(p[0]!=',')p++;
  while(p[0]!='R')p++;
  p++;
  TEMP2=trahexdec(getdata(p));
  TEMP1=TEMP1*16;
  memory[temp]=id+TEMP1+TEMP2;
  temp=temp+1;
  }
  else
  {
	CString AResult,tempstr;
	AResult="      ^ Error!";
    AResult+="\r\n";
    int	CurrentlengthAll;
	CurrentlengthAll=pEdit->GetWindowTextLength();
 	pEdit->SetSel(CurrentlengthAll,CurrentlengthAll);
	pEdit->ReplaceSel(AResult);
  }
}

void Casm::asm21(WORD &temp,char *p,WORD id)
{
  int errorsign=1;char * dearp=p;
  while(dearp[0]==' ')dearp++;
  if(getdata(dearp)!=0x80&&getdata(dearp)!=0x81&&getdata(dearp)!=0x82&&getdata(dearp)!=0x83)errorsign=0;
  while((dearp[0]==' ')||(dearp[0]=='0')||(dearp[0]=='1')||(dearp[0]=='2')||(dearp[0]=='3')||(dearp[0]=='4')||(dearp[0]=='5')||(dearp[0]=='6')||(dearp[0]=='7')||(dearp[0]=='8')||(dearp[0]=='9'))dearp++;
	 while(dearp[0]!='\0')
	 {
     if(dearp[0]!=' ')
		 {errorsign=0;}
     dearp++;
	 }
  if(errorsign==1)
  {
  WORD TEMP1;
  while(p[0]==' ')p++;
  TEMP1=getdata(p);
  memory[temp]=id+TEMP1;
  temp=temp+1;
  }
  else
  {
	CString AResult,tempstr;
	AResult="      ^ Error!";
    AResult+="\r\n";
    int	CurrentlengthAll;
	CurrentlengthAll=pEdit->GetWindowTextLength();
 	pEdit->SetSel(CurrentlengthAll,CurrentlengthAll);
	pEdit->ReplaceSel(AResult);
  }
}

void Casm::asm22(WORD &temp,char *p,WORD id)
{
  int errorsign=1;char * dearp=p;
  while(dearp[0]==' ')dearp++;
  if(dearp[0]!='R')errorsign=0;
  else
  {
     dearp++;
	 if(trahexdec(getdata(dearp))>15||trahexdec(getdata(dearp))<0)errorsign=0;
     while((dearp[0]==' ')||(dearp[0]=='0')||(dearp[0]=='1')||(dearp[0]=='2')||(dearp[0]=='3')||(dearp[0]=='4')||(dearp[0]=='5')||(dearp[0]=='6')||(dearp[0]=='7')||(dearp[0]=='8')||(dearp[0]=='9'))dearp++;
	 while(dearp[0]!='\0')
	 {
     if(dearp[0]!=' ')
		 {errorsign=0;}
     dearp++;
	 }
  }
  if(errorsign==1)
  {
  WORD TEMP1;
  while(p[0]==' ')p++;
  if(p[0]!='r'&&p[0]!='R');//cout<<"       ^error"<<endl;
  else
  {
	  p++;
      TEMP1=trahexdec(getdata(p));
      memory[temp]=id+TEMP1;
	  temp=temp+1;
  }
  }
  else
  {
	CString AResult,tempstr;
	AResult="      ^ Error!";
    AResult+="\r\n";
    int	CurrentlengthAll;
	CurrentlengthAll=pEdit->GetWindowTextLength();
 	pEdit->SetSel(CurrentlengthAll,CurrentlengthAll);
	pEdit->ReplaceSel(AResult);
  }

}

void Casm::asm23(WORD &temp,char *p,WORD id)
{
  int errorsign=1;char * dearp=p;
  while(dearp[0]==' ')dearp++;
  if(dearp[0]!='R')errorsign=0;
  else
  {
     dearp++;
	 if(trahexdec(getdata(dearp))>15||trahexdec(getdata(dearp))<0)errorsign=0;
     while((dearp[0]==' ')||(dearp[0]=='0')||(dearp[0]=='1')||(dearp[0]=='2')||(dearp[0]=='3')||(dearp[0]=='4')||(dearp[0]=='5')||(dearp[0]=='6')||(dearp[0]=='7')||(dearp[0]=='8')||(dearp[0]=='9'))dearp++;
	 while(dearp[0]!='\0')
	 {
     if(dearp[0]!=' ')
		 {errorsign=0;}
     dearp++;
	 }
  }

  if(errorsign==1)
  {
  WORD TEMP1;
  while(p[0]==' ')p++;
  if(p[0]!='r'&&p[0]!='R');//cout<<"       ^error"<<endl;
  else
  {
	  p++;
      TEMP1=trahexdec(getdata(p));
      memory[temp]=id+TEMP1*16;
	  temp=temp+1;
  }
  }

  else
  {
	CString AResult,tempstr;
	AResult="      ^ Error!";
    AResult+="\r\n";
    int	CurrentlengthAll;
	CurrentlengthAll=pEdit->GetWindowTextLength();
 	pEdit->SetSel(CurrentlengthAll,CurrentlengthAll);
	pEdit->ReplaceSel(AResult);
  }
}

void Casm::asm3(WORD &temp,char *p,WORD id)
{   
    int errorsign=1;char * dearp=p;
	while((dearp[0]==' ')||(dearp[0]=='0')||(dearp[0]=='1')||(dearp[0]=='2')||(dearp[0]=='3')||(dearp[0]=='4')||(dearp[0]=='5')||(dearp[0]=='6')||(dearp[0]=='7')||(dearp[0]=='8')||(dearp[0]=='9'))dearp++;
	 while(dearp[0]!='\0')
	 {
     if(dearp[0]!=' ')
		 {errorsign=0;}
     dearp++;
	 }
	if(errorsign==1)
	{
	memory[temp]=id;
	temp=temp+1;
	}
    else
	{
	CString AResult,tempstr;
	AResult="      ^ Error!";
    AResult+="\r\n";
    int	CurrentlengthAll;
	CurrentlengthAll=pEdit->GetWindowTextLength();
 	pEdit->SetSel(CurrentlengthAll,CurrentlengthAll);
	pEdit->ReplaceSel(AResult);
	}
}

void Casm::asm41(WORD &temp,char *p,WORD id)
{
    WORD TEMP1,TEMP2;
	while(p[0]==' ')p++;
	if(id==0x8800)
	{
        int errorsign=1;char * dearp=p;
	    while(dearp[0]==' ')dearp++;
	    if(dearp[0]!='R')errorsign=0;
		else
		{
           dearp++;
	       if(trahexdec(getdata(dearp))>15||trahexdec(getdata(dearp))<0)errorsign=0;
	       while(dearp[0]!=','&&dearp[0]!='\0')
		   {
            if(!((dearp[0]==' ')||(dearp[0]=='0')||(dearp[0]=='1')||(dearp[0]=='2')||(dearp[0]=='3')||(dearp[0]=='4')||(dearp[0]=='5')||(dearp[0]=='6')||(dearp[0]=='7')||(dearp[0]=='8')||(dearp[0]=='9')))
		            errorsign=0;
            dearp++;
		   }
           if(dearp[0]=='\0')errorsign=0;
		   dearp++;

		   while(dearp[0]==' ')dearp++;
           while((dearp[0]!='\0')&&(dearp[0]!=' '))
		   {
			  if(!((dearp[0]==' ')||(dearp[0]=='0')||(dearp[0]=='1')||(dearp[0]=='2')||(dearp[0]=='3')||(dearp[0]=='4')||(dearp[0]=='5')||(dearp[0]=='6')||(dearp[0]=='7')||(dearp[0]=='8')||(dearp[0]=='9')||(dearp[0]=='A')||(dearp[0]=='B')||(dearp[0]=='C')||(dearp[0]=='D')||(dearp[0]=='E')||(dearp[0]=='F')))
		            errorsign=0;
               dearp++;
		   }

		   //while(dearp[0]!=(' '||'\0'))dearp++;
           while(dearp[0]!='\0')
		   {
               if(dearp[0]!=' ')
			   {errorsign=0;}
               dearp++;
		   }
		}
         if(errorsign==1)
		 {
		   p++;
	       TEMP1=trahexdec(getdata(p));
	       while(p[0]!=',')p++;
	       p++;
           TEMP2=getdata(p);
		   memory[temp]=TEMP1*16+id;
		   temp++;
		   memory[temp]=TEMP2;
		   temp++;
		 }
		 else
		 {
	     CString AResult,tempstr;
	     AResult="      ^ Error!";
         AResult+="\r\n";
         int	CurrentlengthAll;
	     CurrentlengthAll=pEdit->GetWindowTextLength();
 	     pEdit->SetSel(CurrentlengthAll,CurrentlengthAll);
	     pEdit->ReplaceSel(AResult);
		 }
	}
	if(id==0xe400)
	{
		int errorsign=1;char * dearp=p;
	    while(dearp[0]==' ')dearp++;
	    if(dearp[0]!='R')errorsign=0;
		else
		{
           dearp++;
	       if(trahexdec(getdata(dearp))>15||trahexdec(getdata(dearp))<0)errorsign=0;
	       while(dearp[0]!=','&&dearp[0]!='\0')
		   {
            if(!((dearp[0]==' ')||(dearp[0]=='0')||(dearp[0]=='1')||(dearp[0]=='2')||(dearp[0]=='3')||(dearp[0]=='4')||(dearp[0]=='5')||(dearp[0]=='6')||(dearp[0]=='7')||(dearp[0]=='8')||(dearp[0]=='9')))
		            errorsign=0;
            dearp++;
		   }
           if(dearp[0]=='\0')errorsign=0;
		   dearp++;

		   while(dearp[0]==' ')dearp++;
		   while(dearp[0]!='['&&dearp[0]!='\0')
		   {
            if(!((dearp[0]==' ')||(dearp[0]=='0')||(dearp[0]=='1')||(dearp[0]=='2')||(dearp[0]=='3')||(dearp[0]=='4')||(dearp[0]=='5')||(dearp[0]=='6')||(dearp[0]=='7')||(dearp[0]=='8')||(dearp[0]=='9')))
		            errorsign=0;
            dearp++;
		   }
           dearp++;while(dearp[0]==' ')dearp++;
           while((dearp[0]!='\0')&&(dearp[0]!=']'))
		   {
			  if(!((dearp[0]==' ')||(dearp[0]=='0')||(dearp[0]=='1')||(dearp[0]=='2')||(dearp[0]=='3')||(dearp[0]=='4')||(dearp[0]=='5')||(dearp[0]=='6')||(dearp[0]=='7')||(dearp[0]=='8')||(dearp[0]=='9')||(dearp[0]=='A')||(dearp[0]=='B')||(dearp[0]=='C')||(dearp[0]=='D')||(dearp[0]=='E')||(dearp[0]=='F')))
		            errorsign=0;
               dearp++;
		   }
           if(dearp[0]=='\0')errorsign=0;
		   dearp++;
           while(dearp[0]!='\0')
		   {
               if(dearp[0]!=' ')
			   {errorsign=0;}
               dearp++;
		   }
		}
		if(errorsign==1)
		{
           p++;
	       TEMP1=trahexdec(getdata(p));
		   while(p[0]!='[')p++;
		   p++;
		   TEMP2=getdata(p);
           memory[temp]=TEMP1*16+id;
           temp++;
		   memory[temp]=TEMP2;
		   temp++;
		}
         else
		 {
	     CString AResult,tempstr;
	     AResult="      ^ Error!";
         AResult+="\r\n";
         int	CurrentlengthAll;
	     CurrentlengthAll=pEdit->GetWindowTextLength();
 	     pEdit->SetSel(CurrentlengthAll,CurrentlengthAll);
	     pEdit->ReplaceSel(AResult);
		 }

	}
	if(id==0xe700)
	{
		int errorsign=1;char * dearp=p;
	    while(dearp[0]==' ')dearp++;
        if(dearp[0]!='[')errorsign=0;
		else
		{
          dearp++;

⌨️ 快捷键说明

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