в SEGTAB, скидання лічильника
strcpy (segtab [seg-1]. name, pole [0]);// розміщення;
} (! strcmp (pole [1], В«endsВ»))// if ENDS, то запис довжини сегм-та
{segtab [seg-1]. len = cnt; (В«add to segtab:% s% d% d n", [seg-1]. name, seg, segtab [seg- 1]. len);;
} ((! strcmp (pole [0], В«assumeВ»)) | | (! strcmp (pole [0], " 0")))
continue;// if порожнє поле-читання сл. рядка = findop (pole [0]); (num)// if код операції - збільшення
{lent = op2code (num, 0, pole, cod);// рахунок. розміщу. на її довжину
if (lent) {printf (В«lenght:% d n", lent); + = lent;
} printf (В«Error: wrong operand! n");;
} ((pole [0] [strlen (pole [0]) - 1] == ':') | | (! strcmp (pole [1], В«dwВ»)))
{if (pole [0] [strlen (pole [0]) - 1] == ':') [0] [strlen (pole [0]) - 1] = ' 0 ';// if мітка (findsym (pole [0]) == -1)// не знайдено в SYMTAB
{strcpy (symtab [psym]. name, pole [0]);// занесення до SYMTAB [psym]. sgm = seg; [psym]. dsp = cnt; (В«add to symtab :% s% d% d n ", [psym]. name, symtab [psym]. sgm, symtab [psym]. dsp); + +;
}// if мітка знайдена - ошібкаprintf (В«Error: label% s retry! nВ», pole [0]); (! strcmp (pole [1 ], " 0")) continue; = findop (pole [1]);
if (num)// if код операції - збільшення
{lent = op2code (num, 1, pole, cod);// рахунок. розміщу. на її довжину
if (lent) {printf (В«lenght:% d n", lent); + = lent;
} printf (В«Error: wrong operand! n");
} printf (В«Error: wrong mnemonic code! n");
}// у всіх ін випадках - помилка
}
//////////////////////////// second passage * ftmp;// тимчасові файлиfname [2] [10] = {{В«temp1.datВ»}, {В«temp2.datВ»}}; (); (); (В» *** second passage *** n "); = 0; + +; = 0; (ft);
while (! feof (ft))// повторювати поки не кінець файлу
{fgets (stk, 80, ft);// читання рядки (В« n"); (); (stk); pol (stk, pole);// розбиття рядка на поля
if (! strcmp (pole [1], В«segmentВ»))// if друге поле SEGMENT
{seg + +;// збільшення номера сегмента = fopen (fname [seg-1], В«w + bВ»);// відкрити соотв. вр. файл = 0;// скидання лічильника розміщення;
} (! strcmp (pole [1], В«endsВ»))// if ENDS-заткрить соотв. вр. файл
{fclose (ftmp);;
} ((! strcmp (pole [0], В«assumeВ»)) | | (! strcmp (pole [0], " 0")))