9. Блок-схема к заданию 5


10. ASM 5

mes macro msg

mov ah,9

lea dx,msg

int 21h

endm

d_seg segment

k dw 10

str1 db 'Registr AX soderzhit 0110000b, a registr DX soderzhit 1000100b',10,13,'$'

str2 db 'Nomer samogo mladshego bita, soderzhaschego 1',10,13,'$'

str3 db 10,13,'Press any key......',10,13,'$'

enter db 10,13,'$'

d_seg ends

c_seg segment

assume ds:d_seg, cs:c_seg

vivod proc

xor cx,cx

k_del:

sub dx,dx

div k

add dx,'0'

push dx

inc cx

cmp ax,0

jne k_del

k3:

pop dx

mov ah,2

int 21h

loop k3

ret

vivod endp

start:

mov ax, d_seg

mov ds, ax

mov ax, 0110000b

mov dx, 1000100b

nachalo:

clc

rcr ax, 1

inc bx

jc vivod1

cmp ax,0

jne nachalo

mov bx,7

m1:

clc

rcr dx, 1

inc bx

jc vivod1

cmp dx,0

jne m1

vivod1:

mes enter

mes str1

mes enter

mes str2

mes enter

mov dl, bl

mov ax, dx

call vivod

mes enter

mes str3

mov ah,1

int 21h

mov ah, 4ch

int 21h

c_seg ends

end start

Описание: C:\Users\Студент\Desktop\курсовые\моя\5.png


11. Блок-схема к заданию 6


12. ASM 6

mes macro str

mov ah,9

lea dx,str

int 21h

endm

dseg segment

ten dw 10

filename db 8 dup(0)

dta db 2ch dup(' '),0,10,13,'$'

error db 10,13,'File not found',10,13,'$'

exit db 10,13,'Press any key........$'

inp db 'Input filename:',10,13,'$'

out1 db 10,13,10,13,'Size file in DTA:',10,13,10,13,'$'

out2 db 'FILE_NAME - $'

out3 db 'FILE_SIZE - $'

out4 db ' bytes',10,13,'$'

dseg ends

cseg segment

assume cs:cseg, ds:dseg

start: mov ax,dseg

mov ds,ax

mes inp

mov ah,1ah

lea dx,dta

int 21h

xor si,si

povtor: mov ah, 1

int 21h

cmp al, 13

je ok

mov filename[si], al

inc si

jmp povtor

ok:mov ah,4eh

lea dx,filename

mov cx,0

int 21h

jc err

mes out1

mes out2

mes dta[1eh]

mes out3

mov dx,word ptr dta[1ah]+2

mov ax,word ptr dta[1ah]

mov cx,0

jmp next

l1:mov dx,0

next:div ten

push dx

inc cx

cmp ax,0

jne l1

n: pop dx

add dx,'0'

mov ah,2

int 21h

loop n

mes out4

jmp quit

err:mes error

quit:mes exit

mov ah,1

int 21h

mov ah,4ch

int 21h

cseg ends

end start

Описание: C:\Users\Студент\Desktop\курсовые\моя\6.png

13. KOMP.CPP

#include<graphics.h>

#include<iostream.h>

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<dos.h>

#include<bios.h>

#include<process.h>

void pomehi(int x, int y, int i)

{

setcolor(i);

line(x-100,y-60,x-80,y-60);

line(x-60,y-50,x-40,y-50);

line(x-20,y-60,x,y-60);

line(x+20,y-50,x+40,y-50);

line(x+60,y-60,x+80,y-60);

line(x-100,y-20,x-80,y-20);

line(x-60,y-10,x-40,y-10);

line(x-20,y-20,x,y-20);

line(x+20,y-10,x+40,y-10);

line(x+60,y-20,x+80,y-20);

line(x-100,y+20,x-80,y+20);

line(x-60,y+30,x-40,y+30);

line(x-20,y+20,x,y+20);

line(x+20,y+30,x+40,y+30);

line(x+60,y+20,x+80,y+20);

line(x-100,y+60,x-80,y+60);

line(x-60,y+70,x-40,y+70);

line(x-20,y+60,x,y+60);

line(x+20,y+70,x+40,y+70);

line(x+60,y+60,x+80,y+60);

}

void komp(int x, int y)

{

int i;

///////////////monitor////////////////

i=8;

setcolor(i);

rectangle(x-120, y-100, x+120, y+100);

setfillstyle(SOLID_FILL,i);

floodfill(x-115,y-95,i);

i=0;

setcolor(i);

rectangle(x-110, y-90, x+110, y+90);

setfillstyle(SOLID_FILL,i);

floodfill(x,y,i);

i=0;

setcolor(i);

line(x-120, y-100, x-110, y-110);

line(x+120, y+100, x+130, y+90);

line(x+120, y-100, x+130, y-110);

line(x-110, y-110, x+130, y-110);

line(x+130, y-110, x+130, y+90);

line(x+20, y+110, x+20, y+100);

line(x-20, y+110, x-20, y+100);

rectangle(x+60, y+110, x-60, y+120);

line(x+60, y+110, x+70, y+100);

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;

}

Описание: C:\Users\Студент\Desktop\курсовые\моя\комп.png

Описание: C:\Users\Студент\Desktop\курсовые\моя\меню.png

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.         Голубь Н. - Искусство программирования на Ассемблере


Информация о работе «Ассемблер и программирование»
Раздел: Информатика, программирование
Количество знаков с пробелами: 18828
Количество таблиц: 0
Количество изображений: 14

Похожие работы

Скачать
28344
0
2

... входы (уровни) irq0…irq7. Для запрещения (маскирования) определенных уровней прерываний необходимо установить соответствующие биты регистра IMR. Эта операция осуществляется путем программирования порта 21h. o     Регистр обслуживаемых прерываний ISR (Interrupt Service Register) – восьмиразрядный регистр, единичное состояние разрядов которого показывает, прерывания каких уровней обрабатываются в ...

Скачать
35650
0
0

... # будет тесно интегрирован с языком XML[1]. 2.2 Паскаль Паскаль [PASCAL - акроним с французского - Program Applique a la Selection et la Compilation Automatique de la Litterature] - Процедурно-ориентированный язык программирования высокого уровня, разработанный в конце 1960-х гг. Никлаусом Виртом, первоначально для обучения программированию в университетах. Назван в честь французского ...

Скачать
48658
0
0

... времени на возню с файлами на дисках или ожидание ввода, не смогут продемонстрировать какое-то впечатляющее увеличение скорости. 2. КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ 2.1. Машинно – ориентированные языки  Машинно – ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и ...

Скачать
130405
7
0

... AVR Studio запомнит расположение окон и использует эти установки при следующем запуске проекта. 3.2. Анализ методики реализации разработки программного обеспечения 3.2.1. Классификация вариантов заданий Цель заданий – практическое освоение методики программирования на ассемблере микроконтроллеров ATMEL семейства AVR, отладка программы на симуляторе AVR Studio и программирование кристалла с помощью ...

0 комментариев


Наверх