Смекни!
smekni.com

Узгодження різномовних модулів (стр. 5 из 5)


ПЕРЕЛІК ПОСИЛАНЬ

1. Гук М. Аппаратные средства IBM PC Санкт-Питербург, 1997.

2. Жигарев А. Н. Основы компьютерной грамоты. Ленинград Машиностроение, 1987.

3. С. Мюллер. Модернизация и ремонт ПК. 2003.

4. Гук. М. Процессоры Intel от 8086 до Pentium. Санкт-Питербург Питер Паблишинг, 1997.

5. Фигурнов В.Э. IBM PC для пользователя. Москва Инфа-М, 1997.

6. Немнюгін С.А. Turbo Pascal Практикум. Санкт-Петербург Питер 2002.

7. Сердюченко В.Я. Розробка алгоритмів та програмування мовою Turbo Pascal, Харків 1995.

Юров В. И. Справочная система по язику ассемблера IBM PC. Санкт- Петербург Питер 1998.


ДОДАТОК А

Текст програми на мові Pascal

program kyrsach_by_oe;

{$l abc}{abc.obj}

uses crt;

type

vedomost=record

naimenovanie:string[12];

massa:Real;

teploemkost:Real;

poverxnost:Real;

T,e:Real;

num:byte;

end;

const

norm=$17;

sel=GREEN;

n=6;

var

menu:array[1..n] of string[40];

punkt:integer;

ch:char;

x,y:integer;

a:vedomost;

Fname:string;

PM:byte;

krec:byte;

f:file of vedomost;

S4,summa4_T:real;

t:real;

mass:array[1..20] of vedomost;

procedure abv; external;

procedure vvod (var a:vedomost);

begin

clrscr;

writeln('Vvedite naimenovanie IP: ');

readln(A.Naimenovanie);

writeln('Vvedite massy: ');

readln(A.Massa);

writeln('Vvedite ydelnyy teploemkost: ');

readln(a.teploemkost);

writeln('Vvedite poverxnost ');

readln(a.poverxnost);

writeln('Vvedite …: ');

readln(a.e);

writeln ('Press Enter...');

readln;

end;

procedure read_f;

var

i:byte; {nomer ykazatelya}

begin

writeln('Vvedite ima fajla');

readln(fname);

krec:=0; {kolitchestvo elementov mass poka 0}

assign(f,fname);

reset(f);

for i:=0 to filesize(f)-1 do

begin

krec:=krec+1; {yvelichim stchotchik na 1}

read(f,mass[krec]); {zapishem inf o stydente f element massiva}

end;

close(f);

end;

procedure CreateFile;

var

F:file of vedomost;

A:vedomost;

begin

clrscr;

write ('Vvedite ima fajla:'); Readln(Fname);

Assign (F,Fname);

Rewrite(f);

vvod(a);

write(f,a);

close(f);

writeln('Fajl ',Fname,' yspewno sozdan !!!');

writeln('Press Enter...');

Readln;

end;

procedure myframe;

var l,t:integer;

i:integer;

c1,c11,c2,c3,c4,c5,c6,c7,c8,c9,c10:char;

begin

clrscr;

c1:=chr(201);

c2:=chr(205);

c3:=chr(187);

c4:=chr(186);

c5:=chr(200);

c6:=chr(188);

c7:=chr(203);

c8:=chr(202);

c9:=chr(204);

c10:=chr(185);

c11:=chr(206);

gotoxy(l,t);

write (c1);

for i:=2 to 15 do write(c2);

write(c7);

for i:=17 to 29 do write(c2);

write(c7);

for i:=31 to 46 do write(c2);

write(c7);

for i:=48 to 60 do write(c2);

write(c7);

for i:=62 to 72 do write(c2);

writeln(c3);

writeln(c4,' NAIMENOVANIE ',C4,' MASSA ',C4,' YDELNAJA ',C4,' ',C4,' ',C4);

writeln(c4,' IP ',C4,' KG ',C4,' TEPLOEMKOST" ',C4,' POVERXNOST ',C4,' T ',C4);

writeln(c4,' ',c4,' ',c4,' MATERIALA ',c4,' ',c4,' ',c4);

write(c9);

for i:=2 to 15 do write (c2);

write(c11);

for i:=17 to 29 do write(c2);

write(c11);

for i:=31 to 46 do write(c2);

write(c11);

for i:=48 to 60 do write(c2);

write(c11);

for i:=62 to 72 do write(c2);

writeln(c10);

writeln(c4,' ',c4,' ',c4,' ',c4,' ',c4,' ',c4 );

writeln(c4,' ',c4,' ',c4,' ',c4,' ',c4,' ',c4 );

writeln(c4,' ',c4,' ',c4,' ',c4,' ',c4,' ',c4 );

writeln(c4,' ',c4,' ',c4,' ',c4,' ',c4,' ',c4 );

writeln(c4,' ',c4,' ',c4,' ',c4,' ',c4,' ',c4 );

writeln(c4,' ',c4,' ',c4,' ',c4,' ',c4,' ',c4 );

writeln(c4,' ',c4,' ',c4,' ',c4,' ',c4,' ',c4 );

writeln(c4,' ',c4,' ',c4,' ',c4,' ',c4,' ',c4 );

writeln(c4,' ',c4,' ',c4,' ',c4,' ',c4,' ',c4 );

gotoxy(1,18);

writeln(c4,' Summary ',C4,' ',C4,' ',C4,' ',C4,' ',C4);

write(c5);

for i:=2 to 15 do write(c2);

write(c8);

for i:=17 to 29 do write(c2);

write(c8);

for i:=31 to 46 do write(c2);

write(c8);

for i:=48 to 60 do write(c2);

write(c8);

for i:=62 to 72 do write(c2);

writeln(c6);

end;

procedure Add;

var a:vedomost;

f:file of vedomost;

Fname:string;

begin

clrscr;

write ('Vvedite ima fajla:');

readln(Fname);

vvod (a);

Assign (F,Fname);

reset(f);

Seek (F,FileSize (f));

write (F,A);

close(f);

end;

procedure view;

var f:file of vedomost;

A:vedomost;

I,z:byte;

res:integer;

S1,S2,S3,S4:real;

begin

clrscr;

write ('Vvedite ima fajla: '); readln (Fname);

assign (f,fname);

reset (f);

myframe;

S1:=0;

S2:=0;

S3:=0;

S4:=0;

for i:=0 to filesize (F)-1 do

begin

Seek(f,I);

read(f,A);

with A do

begin

T:=(a.massa*a.teploemkost)/(a.poverxnost*a.e);

S1:=S1+a.massa;

S2:=S2+a.teploemkost;

S3:=S3+a.poverxnost;

S4:=S4+T;

Summa4_T:=T;

abv;

gotoxy(2,i+6);write(naimenovanie);

gotoxy(18,i+6);write(massa:3:1);

gotoxy(32,i+6);write(teploemkost:8:1);

gotoxy(49,i+6);write(poverxnost:5:1);

gotoxy(63,i+6);

write (T:2:3);

gotoxy(20,18);write(S1:3:2);gotoxy(33,18);write(S2:3:2);

gotoxy(49,18);write(S3:3:2);gotoxy(64,18);write(S4:3:3);

end;

end;

gotoxy(5,24);

writeln ('ZMI Enter FOR EXIT FROM PROGRAM...');

readln;

close (f);

end;

procedure Del;

var i,n:byte;

f,f1:file of vedomost;

a:vedomost;

begin

clrscr;

write ('Vvedite ima fajla: '); readln (Fname);

write ('Vvedite nomer zapisi: '); readln (N);

assign (f,Fname);

reset (f);

assign(f1,'ff');

rewrite(f1);

FOR i:=0 TO Filesize(f)-1 do

begin

read (f,A);

if (I+1<>N) then

write (f1,A);

end;

close(F);

close(F1);

Erase(f);

rename(f1,fname);

writeln ('nazmi Enter...');

readln;

end;

PROCEDURE EDIT;

VAR a: vedomost;

f:file of vedomost;

n:byte;

begin

clrscr;

begin

writeln ('Vvedite ima fajla: '); readln (fname);

assign (f,Fname);

writeln ('VVedite nomer zapisi: ');

readln(n);

reset (f);

vvod (A);

Seek (f,n-1);

write (f,A);

close (F);

end;

end;

procedure menutoscr;

var i:integer;

a:vedomost;

begin

clrscr;

for i:=1 to n do

begin

gotoxy(x,y+i-1);

write(menu[i]);

end;

gotoxy(5,24);

write('ESC-¤"п ўл室 Ё§ Їа®Ја¬¬л');

textattr:=sel;

gotoxy(x,y+punkt-1);

write(menu[punkt]);

textattr:=norm;

end;

begin

clrscr;

menu[1]:='Dobavit zapis v fail';

menu[2]:='Redaktirovat zapis v faile';

menu[3]:='prosmotr zapisej v fajle';

menu[4]:='Udalit zapis iz faila';

menu[5]:='Sozdat file';

menu[6]:='exit';

punkt:=1;

x:=5;

y:=5; textattr:=norm;

menutoscr;

repeat

ch:=readkey;

if ch=chr(0) then

begin

ch:=readkey;

case ch of

chr(80):{strelka vniz}

if punkt<n then

begin

gotoxy(x,y+punkt-1);

write (menu[punkt]);

punkt:=punkt+1;

textattr:=sel;

gotoxy (x,y+punkt-1);

write (menu[punkt]);

textattr:=norm;

end;

chr(72):

if punkt>1 then

begin

gotoxy(x,y+punkt-1);

write(menu[punkt]);

punkt:=punkt-1;

textattr:=sel;

gotoxy(x,y+punkt-1);

write(menu[punkt]);

textattr:=norm;

end;

end;

end

else

begin

if ch=chr(13) then begin

case punkt of

1:add;

2:edit;

3:view;

4:del;

5:createfile;

6:ch:=chr(27);{vixod}

end;

menutoscr;

end;

end;

until ch=chr(27);

end.


ДОДАТОК Б

Текст програми на мові Assembler

Title prog

.Model large

.Data

extrn Summa4_T:word

extrn S4:word

extrn t:word

.Code

public abv

abv proc far

mov bx,Summa4_T

mov cx,s4

add cx,bx

mov S4,cx

abv endP

ret

mov ah,4Ch

int 21h

end


ДОДАТОК В

Лістинг

_Microsoft (R) Macro Assembler Version 5.10 1/13/6

abv Page 1-1

1title abv

2.Model large

3.Data

4extrn e:byte

5extrn massa:byte

6extrn teploemkost:byte

7extrn t:word

8extrn poverxnost:byte

9.Data

10.Code

11Public abv

12 0000abv proc far

13 0000 A0 0000 Emov al,massa

14 0003 8A 16 0000 Emov dl,teploemkost

15 0007 F6 E2mul dl;Умножение.результат в -> AL

16 0009 8A C8mov cl,al;сохраняем чисельник в CL

17 000B A0 0000 Emov al,poverxnost

18 000E 8A 16 0000 Emov dl,e

19 0012 F6 E2mul dl;инструкция умножения

20 0014 8A D8mov bl,al;сохраняем знаменник в BL

21 0016 8A C1mov al,cl

22 0018 98cbw

23 0019 8A D3mov dl,bl

24 001B F6 F2div dl

25 001D A3 0000 Emov t,ax

26 0020abv endP

27 0020 C3ret

28 0021 B4 4Cmov ah,4Ch

29 0023 CD 21int 21h

30end

_Microsoft (R) Macro Assembler Version 5.10 1/13/6

abv Symbols-1

Segments and Groups:

N a m e Length AlignCombine Class

ABC_TEXT . . . . . . . . . . . . 0025WORDPUBLIC'CODE'

DGROUP . . . . . . . . . . . . . GROUP

_DATA . . . . . . . . . . . . 0000WORDPUBLIC'DATA'

Symbols:

N a m e Type Value Attr

ABV . . . . . . . . . . . . . . F PROC0000ABC_TEXTGlobalLength = 0020

E . . . . . . . . . . . . . . . V BYTE0000_DATAExternal

MASSA . . . . . . . . . . . . . V BYTE0000_DATAExternal

POVERXNOST . . . . . . . . . . . V BYTE0000_DATAExternal

T . . . . . . . . . . . . . . . V WORD0000_DATAExternal

TEPLOEMKOST . . . . . . . . . . V BYTE0000_DATAExternal

@CODE . . . . . . . . . . . . . TEXT abc_TEXT

@CODESIZE . . . . . . . . . . . TEXT 1

@CPU . . . . . . . . . . . . . . TEXT 0101h

@DATASIZE . . . . . . . . . . . TEXT 1

@FILENAME . . . . . . . . . . . TEXT abc

@VERSION . . . . . . . . . . . . TEXT 510

30 Source Lines 30 Total Lines 22 Symbols

46730 + 447218 Bytes symbol space free

0 Warning Errors

0 Severe Errors


ДОДАТОК Г

Результат роботи програми

На рис.1 зображено головне меню програми Programm.pas

Рис 1 Головне меню програми

На рис.2 зображено занесення нового запису до файлу

Рис.2 Занесення нового запису до файлу


На рисунку 3 зображено стан програми після редагування запису

Рис.3 Редагування файлу

На рис.4 стан програми після вибору пункту Перегляд

Рис.4 Перегляд

На рис.5 Видалення запису з файлу

Рис 5 Видалення запису