if (flag==0 && buf[0]!=0 && gd==0) {
if (segsearch(buf)==1) {
gd++; } }
if (flag==0 && buf[0]!=0 && gd==0) {
int er=2;error(er,buf,str);
break; }
if (flag==1 && buf[0]!=0) {
cmp(buf,str);
b++; if (b>2) { b=0;break; }
if (f1==12) { f1=0;break; }}
if (flag==2) {
AnalizDir(buf,str,dir);break; }
clearbuf; zt=0;gd=0;
} } }
timedat(); NamePrint();
fclose(file_r); fclose(file_w); }
return 0;
}
char MakeList(char **argv) //замена .asm или др. в argv[1] на .lst
{
char buf[4]=".lst";
int i=0,a=0,k=0; //счетчики
strcpy(oldname,argv[1]);
while (a!=4){
if (argv[1][i]!='.' && a==0)
argv[1][i++];
else { argv[1][i++]=buf[k++];
a++; } }
return **argv; }
void AnalizDir(char *buf,char *str,char *dir[6])
{
int sw,w;
for (int i=1;i<7;i++) { //поиск директивы с dir[]
if (strcmp(buf,dir[i])==0) {
//выбор директивы
if (i==1) {
sw=6;print(sw,str,k1,w); break; }
if (i==2) {
AnalizEnd(str);
sw=8;print(sw,str,k1,w); break; }
if (i==3) {
if (xc==0) {
if (strcmp(n1->type,"dw")==0) {
disp+=sizeof(dw); }
else
disp+=sizeof(db);
xc++; }
sw=9; print (sw,str,k1,w); break; }
if (i==4) {
sw=10; print(sw,str,k1,w); break; }
if (i==5 || i==6) {
sw=7; print(sw,str,k1,w);
if (ret->next!=NULL) ret=ret->next;
if (qw->next!=NULL) qw=qw->next; break; }
} } }
namek *LoadName(char *str)
{
int r=0; char s,buf[9]; int i=0,z=0; //счетчики
clearbuf; s=0;
while (s!='\n') {
s=str[i]; if (s!=' ' && s!='\t' && s!='\n') {
buf[z]=s;
z++;
}
else { if (buf[0]!=0) {
if (as==0) { //указывает, тот же ли это элем списка, если не 0, то созд. нового
if (r==0) { n=new namek; r++; } //r=0,
//если это новый элем списка
//запись в список n имени перем(case 0:),
// ее типа(case 1:) и значения(case 2:)
switch (y++) {
case 0: strcpy(n->name,buf); break;
case 1: strcpy(n->type,buf);
n->smesh=0;break;
case 2:
n->chislo=atoi(buf); //перевод с char в int
n->next=NULL;
n1=n; // указатель на текущий эл списка
r=0; break; } }
else {
if (r==0) {
proverka(buf,str);
n2=new namek;r++; }
switch (y++) {
case 0: strcpy(n2->name,buf);break;
case 1: strcpy(n2->type,buf);
if (strcmp(n1->type,"dw")==0) {
n2->smesh=sizeof(dw)+n1->smesh; }
else n2->smesh=sizeof(db)+n1->smesh; break;
case 2:
n2->chislo=atoi(buf);
n2->next=NULL;
n1->next=n2; //связать элементы списка
n1=n2; //n1 - текущий эл
r=0;break; } }
z=0;
if (s=='\n') break;
else clearbuf;
} } i++;
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.