void Assembler :: pass2(ifstream &inHandle, ofstream &outHandle)
{ outHandle<<setfill('0');
while(!inHandle.eof())
{ inHandle.getline(src_line,50);
//declerative or imperative statement
if(toascii(src_line[0])>=48 && toascii(src_line[0])<=57)
{ breakStatement();
outHandle<<address<<")\t+ "<<mnemonicCode<<" "<<regCode<<" "<<setw(3)<<operand<<"\n";
}
else
outHandle<<"\n";
}
}
void Assembler :: breakStatement()
{ int i=0,j=0;
char oprCode[20],oprClass;
ifstream in;
//initializing all variables
strcpy(address,NULL);
strcpy(mnemonicClass,NULL);
strcpy(mnemonicCode,NULL);
init(oprCode);
regCode='0';
operand=0;
//get line address
while(src_line[i]!=')')
address[i]=src_line[i++];
//find mnemonic class string at i-2,i-1
while(src_line[i]!=',')
i++;
//post-LTORG or post-END literal statement
if(src_line[i-2]=='(' && src_line[i-1]=='L')
{ //set mnemonic code
strcpy(mnemonicCode,"00");
//keep register code as default 0
//get operand
i++;
while(src_line[i]!=')')
oprCode[j++]=src_line[i++];
cout<<"\n"<<oprCode;
operand=getOperandAddress(oprCode,'L',in);
}
in.close();
return;
cout<<"check";
}
This is part of my code for pass2 of a two-pass assembler
I get an error saying
"Abnormal program termination"
whenever the control reaches the return statement, no matter where i place the return statement i get the same error.
any idea why this is happening ??