n1=n; clearbuf;
while (s!='\n'){
s=str[j++];
if(s==';')break;
if (s!=' '&& s!=','&&s!='\n'&&s!='\t'){
buf[x]=s; x++;}
if (s!=','&&s!='\n'){
if (s==' ' && buf[0]!=0){
clearbuf; x=0;}}
else {
if (z==0){
for(i=5;i<18;i++){
if (strcmp(buf,reg[i])==0){
z++;clearbuf;x=0;break;}
} continue; }
if (z==1){
while (n1->next!=NULL){
if (a>0) n1=n1->next;
if (strcmp(buf,n1->name)==0){
if (i<10 && strcmp(n1->type,"dw")==0){
c++;clearbuf;x=0; break;}
if (i>9 && strcmp(n1->type,"db")==0){
c++;clearbuf;x=0; break;}
else {z=0;break;}}
a++; } } }}
if (z==0) {int er=0;error(er,buf,str);}}
void NamePrint()
{ int a=0; n1=n;lab1=lab;
fprintf(file_w,"\n\t\tИмя Тип Размер Смещение\n");
while (n1->next!=NULL){
if (a>0) n1=n1->next;
fprintf(file_w,"\t\t%s\t%s\t%d\t%s:%04X\n",n1->name,n1->type,n1->chislo,u->segmname,n1->smesh);
a++;}
fprintf(file_w,"\t\t%s\t%s\t\t%s:%04X\n",lab1->label,"near",u1->segmname,lab1->labdisp);
lab1=lab1->next;
fprintf(file_w,"\t\t%s\t%s\t\t%s:%04X\n",lab1->label,"near",u1->segmname,lab1->labdisp);
fprintf(file_w,"\t\t\t\t\t\t\t\t\t\n");}
void timedat(void)
{
struct date d; struct time t; getdate(&d);
gettime(&t);
fprintf(file_w,"\n\n\t\t%s\t%d/%d/%d\n","DATE",d.da_day,d.da_mon,d.da_year);
fprintf(file_w,"\t\t%s\t%d:%02d:%02d\n","TIME",t.ti_hour, t.ti_min, t.ti_sec);}
Файл коду:
data segment
a db 55
b dw 44
c db 33
data ends
code segment
assume ds:data,cs:code
begin:
mov ax,data
mov ds,ax
mov cl,a
@a: xor bx,bx
add bx,b
sub bh,c
loop @a
mov c,bh
code ends
end begin
Файл листингу:
1 0000 data segment
2 0000 0037 a db 55
3 0001 002C b dw 44
4 0003 0021 c db 33
5 0004 data ends
6 0000 code segment
7 0000 assume ds:data,cs:code
8 0000 begin:
9 0000 B8 0000s mov ax,data
10 0003 8E D8 mov ds,ax
11 0005 8A 0E 0000r mov cl,a
12 0009 33 DE @a: xor bx,bx
13 000B 03 1E 0001r add bx,b
14 000F 2A 3E 0003r sub bh,c
15 0013 E2 F4 loop @a
16 0015 88 3E 0003r mov c,bh
17 0019 code ends
18 end begin
DATE 7/6/2001
TIME 17:16:54
Имя Тип Размер Смещение
a db 55 data:0000
b dw 44 data:0001
c db 33 data:0003
begin near code:0000
@a near code:0009
Висновок: в процесі лабораторної роботи були вивчені принципи компіляції програм, а також методи написання компіляторів.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.