if (strstr(str,"dw") || strstr(str,"db")) // -/- dw, db
{
n=LoadName(str); }
if (strstr(str,":") || strstr(str,"segment"))
{
AnalizSegment(str); } }
prohod++; nstr=1;
fclose(file_r);
}
// проход 2
if (prohod==1)
{
int gd=0;
unsigned char w;
k=LoadCode(); //возвращает список k с командами и их кодами
k1=k; ret=n; qw=n; disp=n1->smesh;
LoadByte2();
dir[1]="segment"; dir[3]="ends";
dir[2]="end"; dir[4]="assume";
dir[5]="dw"; dir[6]="db";
if ((file_r=fopen(oldname,"r"))==NULL) {
printf("Cannot open file 'code.asm'.\n");
exit(0); }
while (!feof(file_r))
{ fgets(str,40,file_r);
sd=0;
clearbuf;
s=0;
flag=0; //1-если команда найдена
i=0; zt=0; //счетчики
if (strcmp(str,"\n")==0)
{ int sw=12;
print(sw,str,k1,w); }
while (s!='\n') { k1=k; // списки с командами, операндами, кодами
s=str[i]; i++; if (s==';')
break;
if ((s!='\t')&&(s!=' ')&& (s!='\n')&&(s!=',')&&(s!=':'))
{ buf[zt]=s;
zt++; //счетчик }
else { // перемещение по списку k1 и
// сравнивание buf с k1->com, тип loadcode
if (flag==0 && buf[0]!=0)
{ int rt=0;
while (k1->next!=NULL) {
if (rt==2) k1=k1->next;
if (rt==1) rt++;
if (strcmp(k1->com,buf)==0) {
flag=1; //если в buf команда(k1->com)
break; }
if (rt==0) {
k1=k1->next;
rt++; }
} }
// сравнивание с директивами (массив dir[7])
if (flag==0 && buf[0]!=0) {
for (int d=1;d<7;d++) {
if (strcmp(buf,dir[d])==0) {
flag=2; //если buf-это директива
break;
} } }
// если это метка (@)
if (strstr(buf,"@")) {
lab1=lab1->next;
offset=lab1->labdisp=disp; }
// сравнивание buf с именами меток
if (flag==0 && buf[0]!=0) {
lab1=lab;q=0;
while (lab1->next!=NULL) {
if (q==1) lab1=lab1->next;
if (strcmp(lab1->label,buf)==0) {
gd++;
if (q==0) {int sw=6;print(sw,str,k1,w); }
break; }
q++;
}}
// сравнивание buf с переменными с n, тип namek
if (flag==0 && buf[0]!=0 && gd==0) {
n1=n;q=0;
while (n1->next!=NULL) {
if (q==2) n1=n1->next;
if (q==1) q++;
int rez=strcmp(n1->name,buf);
if (q==0){n1=n1->next;q++; }
if (rez==0){gd++;break;
} } }
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.