line(x+60, y+120, x+80, y+100);
line(x-60, y+110, x-50, y+100);
line(x+20, y+110, x+30, y+100);
circle(x+110,y+95,3);
circle(x+100,y+95,2);
circle(x+90,y+95,2);
///////////////sistemnik//////////////
i=0;
setcolor(i);
rectangle(x-130, y+120, x-200, y-100);
line(x-200, y-100, x-110, y-190);
line(x-130, y-100, x-40, y-190);
line(x-110, y-190, x-40, y-190);
line(x-130, y+120, x-110, y+100);
line(x-40, y-190, x-40, y-110);
rectangle(x-190, y-90, x-140, y-80);
rectangle(x-190, y-70, x-140, y-60);
rectangle(x-190, y-50, x-140, y-40);
rectangle(x-190, y-30, x-140, y-20);
rectangle(x-180, y-10, x-150, y);
rectangle(x-180, y+10, x-150, y+20);
rectangle(x-190, y+100, x-140, y+110);
circle(x-165,y+80,5);
circle(x-165,y+60,4);
line(x-165,y+80,x-165,y+84);
circle(x-165,y+80,2);}
void kolonki(int x, int y, int i)
{int k;
//////////////left//////////////////
k=i;
i=15;
setfillstyle(INTERLEAVE_FILL,i);
i=k;
setcolor(i);
rectangle(x-210, y+120, x-260, y+60);
line(x-210, y+120, x-200, y+110);
line(x-210, y+60, x-200, y+50);
line(x-260, y+60, x-240, y+40);
line(x-240, y+40, x-200, y+40);
i=k;
setcolor(i);
pieslice(x-235, y+90, 0, 180, 20);
rectangle(x-255, y+90, x-215, y+110);
floodfill(x-245,y+95,i);
//////////////right/////////////////
rectangle(x+140, y+120, x+190, y+60);
line(x+190, y+120, x+210, y+100);
line(x+190, y+60, x+210, y+40);
line(x+140, y+60, x+160, y+40);
line(x+160, y+40, x+210, y+40);
line(x+210, y+100, x+210, y+40);
i=k;
setcolor(i);
pieslice(x+165, y+90, 0, 180, 20);
rectangle(x+145, y+90, x+185, y+110);
floodfill(x+155,y+95,i);
circle(x+165,y+115,4);
circle(x+155,y+115,3);
circle(x+175,y+115,3);
arc(x+165,y+40,0,150,40);
}
void main()
{int dr=DETECT,mod;
float snd[] = {659.26, 880.00, 1046.50, 987.77, 880.00, 1046.50, 880.00, 987.77, 880.00,
698.46, 783.99, 659.26, 659.26, 880.00, 1046.50, 987.77, 880.00, 1046.50, 880.00, 987.77, 880.00,
659.26, 622.25, 587.33, 587.33, 698.46, 880.00, 987.77, 587.33, 698.46,
830.61, 880.00, 440.00, 523.25, 698.46, 698.46, 659.26, 783.95, 698.46, 698.46,
659.26, 493.88, 523.25, 440.00, 987.77, 987.77, 932.33, 880.00, 987.77, 987.77,
880.00, 783.99, 698.46, 659.26, 659.26, 783.99, 659.26, 587.33, 587.33,
698.46, 587.33, 493.88} ;
int x,y,err,i,ki,key,r,h,c,x1,x2,y1,y2;
char s,str[80]={'K','U','R','S','O','V','A','Y','A',' ','R','A','B','O','T','A'};
initgraph(&dr,&mod," ");
err=graphresult();
if(err){
cout<<"error initgraph"<<grapherrormsg(err);
exit(1); }
snachala:
cleardevice();
i=7;
x=getmaxx()/2;
y=getmaxy()/2;
setfillstyle(SOLID_FILL,i);
floodfill(x,y,i);
setcolor(4);
outtextxy(400,70,"Press any key for STOP Music");
outtextxy(400,80,"Press 'P' for PLAY Music");
outtextxy(400,90,"Press 'M' for GOTO MENU");
outtextxy(400,100,"Press 'Esc' for exit");
settextstyle(0,0,3);
setcolor(2);
outtextxy(150,15,str);
settextstyle(0,0,2);
setcolor(6);
outtextxy(330,380,"KAFEDRA: EVM");
setcolor(5);
outtextxy(330,420,"SPECIALNOST: VMKSiS");
setcolor(4);
outtextxy(30,380,"VIPOLNIL:");
settextstyle(0,0,1);
setcolor(1);
outtextxy(180,380,"STUDENT FITU 1-2a");
settextstyle(0,0,1);
setcolor(0);
outtextxy(180,390,"XLINTCEV A.G.");
settextstyle(0,0,2);
setcolor(4);
outtextxy(30,420,"PROVERIL:");
settextstyle(0,0,1);
setcolor(1);
outtextxy(180,420,"KOLOMEICEVA T.G.");
settextstyle(0,0,1);
setcolor(0);
outtextxy(180,430,"BELIKOV I.Yu.");
komp(x,y); m1:
for(r=0;r<62;r++)
{
if (kbhit()) break;
i=15;
pomehi(x,y,i);
delay(100);
i=7;
kolonki(x,y,i);
i=0;
kolonki(x,y-10, i);
i=0;
pomehi(x,y,i);
delay(100);
sound(snd[r]/1.5);
if (r==11 ^ r==23 ^ r==27 ^ r==31 ^ r==43) { delay (1500); nosound (); delay (600); }
else if (r==53 ^ r==57 ^ r==61) { delay (300); nosound(); delay (1400); }
else if (r==47) { delay (500); nosound (); delay (700); }
else delay(50);
i=7;
kolonki(x,y-10,i);
i=0;
kolonki(x,y,i);
}
nosound();
setcolor(RED);
m:
s=getch();
if (s==27) exit(1);
if (s=='p') {setfillstyle(SOLID_FILL,0); floodfill(getmaxx()/2,getmaxy()/2,8); goto m1;}
if (s!='m') goto m;
cleardevice();
i=15;
setcolor(i);
setfillstyle(SOLID_FILL,i);
floodfill(x,y,i);
settextstyle(0,0,2);
setcolor(RED);
outtextxy(150,30,"MENU");
settextstyle(0,0,1);
setcolor(2);
outtextxy(20,100,"Zadanie po assembleru #1");
setcolor(3);
outtextxy(20,135,"Zadanie po assembleru #2");
setcolor(4);
outtextxy(20,170,"Zadanie po assembleru #3");
setcolor(5);
outtextxy(20,205,"Zadanie po assembleru #4");
setcolor(6);
outtextxy(20,240,"Zadanie po assembleru #5");
setcolor(0);
outtextxy(20,275,"Zadanie po assembleru #6");
setcolor(8);
outtextxy(20,310,"Zadanie po programmirovaniu");
setcolor(9);
outtextxy(20,345,"Back to previos display");
setcolor(12);
outtextxy(20,380,"Exit");
ki=1; x1=14; y1=95; x2=250; y2=115;
rectangle(x1,y1,x2,y2);
sled:
key=bioskey(0);
switch(key)
{
case 18432:{setcolor(15);
rectangle(x1,y1,x2,y2);
if (y1==95) {y1=375;y2=395; ki=9;}
else {y1=y1-35; y2=y2-35; ki--;}
setcolor(RED);
rectangle(x1,y1,x2,y2);
break; }
case 20480:
{setcolor(15);
rectangle(x1,y1,x2,y2);
if (y1==375) {y1=95;y2=115; ki=1;}
else {y1=y1+35; y2=y2+35; ki++;}
setcolor(RED);
rectangle(x1,y1,x2,y2);
break; }
case 7181: switch(ki)
{ case 1: spawnl(P_WAIT, "1.EXE", NULL); break;
case 2: spawnl(P_WAIT, "2.EXE", NULL); break;
case 3: spawnl(P_WAIT, "3.EXE", NULL); break;
case 4: spawnl(P_WAIT, "4.EXE", NULL); break;
case 5: spawnl(P_WAIT, "5.EXE", NULL); break;
case 6: spawnl(P_WAIT, "6.EXE", NULL); break;
case 7: spawnl(P_WAIT, "CPP.EXE", NULL); break;
case 8: goto snachala;
case 9: closegraph(); exit(1); }
}
goto sled;
}
14. Руководство пользователя
Для запуска курсовой работы воспользуйтесь файлом KOMP.EXE.В случае возникновения ошибки «Error initialization» убедитесь, что в папке с приложением также есть файл графического драйвера egavga.bgi и его путь в программе указан правильно.
Для нормального функционирования курсовой работы необходимо наличие в папке следующих файлов:
KOMP.EXE
1.EXE
2.EXE
3.EXE
4.EXE
5.EXE
6.EXE
EGAVGA.BGI
TRIP.CHR
SANS.CHR
LITT.CHR
INPUT.ASM
Любой файл размером < 1 мегабайта (потребуется для индивидуального задания)
При запуске приложения отображается графическая заставка, сопровождаемая мелодией и анимацией, а также содержащая информацию об авторе.
Нажмите “M” для отображения меню курсовой работы. Выход производится с помощью клавиши Esc. При нажатии любой другой клавиши останавливается мелодия и анимация.
Для запуска задания, наведите курсор на задание которое вам нужно и нажмите Enter. Запускается программа из курсовой работы, после выхода из неё, программа автоматически перейдёт в меню
В индивидуальном задании потребуется ввести имя файла, после чего нажать ENTER.
Курсовая работа тестировалась на операционных системах MS DOS и Microsoft Windows 95/2000/XP, для запуска на операционных системах Windows более высокой версии потребуется специальное программное обеспечение.
Список литературы
1. Калашников О. «Ассемблер? Это просто!»
2. Питер Абель. Ассемблер и программирование для IBM PC
3. Курс лекций по предмету «Информатика»
4. Методические указания к выполнению лабораторных работ по предмету «Информатика»
5. Крупник А. - Ассемблер Самоучитель
6. Крупник А. - Изучаем ассемблер
7. Митницкий В. - Архитектура IBM PC и язык Ассемблера
8. Голубь Н. - Искусство программирования на Ассемблере