Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба2(спо).docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
58 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО

ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ

УНИВЕРСИТЕТ ИМЕНИ АКАДЕМИКА С.П. КОРОЛЕВА

(НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ)»

(СГАУ)

Отчет

выполнения лабораторной работы 2

по системному программному обеспечению

Вариант № 2

Выполнила ЯббароваА.Ф. группа 9641

Преподаватель Агафонова

Самара, 2013

Вариант №2

Выполнить вычисление произведения L последних положительных элементов массива A размерности N, значения элементов которого имеют знаковый 8-битный формат и находятся в диапазоне a<=A[i]<=b. Значения параметров L и N должны задаваться в беззнаковом 8-битном формате. Расчетный модуль на языке ассемблера должен быть получен средствами Borland Assembler 5.0. Ввод исходных данных, проверка их корректности, а также вывод результатов вычисления должен осуществляться с помощью приложения, созданного в среде программирования Borland Delphi 7.

Приложение в среде Borland Delphi 7 для ввода исходных данных и получения результатов расчета. Главное окно приложения

Листинг модуля главной формы приложения

unit fMain;

interface

{$L lab2_met}

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, Menus;

var

nn,kk:Byte;

Arr:packed array[0..255] of ShortInt;

Rez_asm:Integer;

procedure DoCalculation; far; external;

type

TfmMain = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Memo1: TMemo;

Label9: TLabel;

Button1: TButton;

Label1: TLabel;

Label10: TLabel;

Splitter1: TSplitter;

Label11: TLabel;

MmRez: TMemo;

Label2: TLabel;

Label6: TLabel;

Label3: TLabel;

edNN: TEdit;

Label7: TLabel;

Label4: TLabel;

Label5: TLabel;

edAA: TEdit;

edBB: TEdit;

Label8: TLabel;

Label12: TLabel;

Label13: TLabel;

edLL: TEdit;

PopupMenu1: TPopupMenu;

N1: TMenuItem;

procedure Button1Click(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure N1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmMain: TfmMain;

implementation

{$R *.dfm}

procedure TfmMain.Button1Click(Sender: TObject);

var

str:string;

i:byte;

Rez_pascal:Integer;

aa, bb:integer;

begin

try

nn:=strtoint(edNN.Text);

aa:=strtoint(edAA.Text);

bb:=strtoint(edBB.Text);

kk:=strtoint(edll.Text);

except

MmRez.Lines.Add('Ошибка ввода исходных данных!');

MmRez.Lines.Add('');

Exit;

end;

if (nn < 2) or

(nn > 255) or

(aa < -128) or

(aa > 127) or

(bb < -128) or

(bb > 127) or

(kk < 1) or

(kk > nn) then

begin

MmRez.Lines.Add('Ошибка в исходных данных: превышен диапазон допустимых значений!');

MmRez.Lines.Add('');

Exit;

end;

str:='*** Исходные данные ***';

MmRez.Lines.Add(Str);

str:=format('N = %d, a = %d, b = %d, K = %d',[nn,aa,bb,kk]);

MmRez.Lines.Add(Str);

//Получить элементы массива

Str:='';

for i:=0 to nn-1 do

begin

Arr[i]:=Random(bb-aa)+aa;

Str:=Format('%sArr[%d]=%d ',[str,i,Arr[i]]);

end;

//Вывести элементы массива

MmRez.Lines.Add(Str);

MmRez.Lines.Add('');

str:='Pascal:';

MmRez.Lines.Add(Str);

//Вычислить в Pascal

Rez_pascal := 0;

for i:=0 to kk-1 do

begin

if Arr[i] < 0 then

Rez_pascal := Rez_pascal + Arr[i];

end;

if Rez_pascal <> 0 then

begin

MmRez.Lines.Add('Отрицательные элементы найдены');

str:=format('результат = %d',[Rez_pascal]);

MmRez.Lines.Add(Str);

end else

MmRez.Lines.Add('Отрицательные элементы не найдены');

MmRez.Lines.Add('');

//Вычислить в Ассемблере

DoCalculation;

str:='Ассемблер:';

MmRez.Lines.Add(Str);

if Rez_asm <> 0 then

begin

MmRez.Lines.Add('Отрицательные элементы найдены');

str:=format('результат = %d',[Rez_asm]);

MmRez.Lines.Add(Str);

end else

MmRez.Lines.Add('Отрицательные элементы не найдены');

MmRez.Lines.Add('');

end;

procedure TfmMain.FormShow(Sender: TObject);

begin

Randomize;

end;

procedure TfmMain.N1Click(Sender: TObject);

begin

MmRez.Lines.SaveToFile('Lab2_test.txt');

end;

end.