📄 asm.cpp
字号:
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 + -