- •Содержание
- •Введение
- •1 Нормативные ссылки
- •2 Спецификация задачи
- •3 Формулировка задачи
- •4 Используемые регистры
- •4.2 Сегментные регистры
- •5 Используемые команды
- •5.1 Команды пересылки и загрузки
- •5.2 Арифметические команды
- •5.2.1 Сложение
- •5.2.2 Вычитание
- •5.2.3 Умножение
- •5.2.4 Деление
- •5.2.5 Изменение знака операнда
- •5.2.6 Увеличение операнда на 1
- •5.2.7 Уменьшение операнда на 1
- •5.3 Команды сдвига
- •5.4 Циклы
- •5.5 Процедуры
- •5.6 Операции над битами и байтами
- •6 Используемые функции dos
- •7 Алгоритм решения задачи
- •7.1 Разработка алгоритма основной программы
- •7.2 Разработка алгоритма процедуры поиска нулевой строки
- •7.3 Разработка алгоритма процедуры формирования слов
- •8 Описание программы
- •8. 1 Программа выбора варианта №5, формирования и записи слов (Приложение а)
- •8.2 Программа построения графика (Приложение б)
- •9 Результаты машинного тестирования
- •Заключение
- •Список используемых источников
8.2 Программа построения графика (Приложение б)
Первый шаг при построении графика в Delphi – это создание формы. Выбираем следующие компоненты: Chart, Button, Label. Затем приступаем к программному коду.
Строка 1 – название проекта, строка 2 – интерфейсная часть, в которой хранятся описания видимых объектов. Далее строки 3-5 – это подключение необходимых модулей. В строках 6-14 содержится описание компонентов. В строке 15 вызывается процедура построения графика. В 16 вызывается процедура кнопки «Выход», которая описана в строках 44-47. Строки 26-43 содержат описание процедуры нажатия кнопки «Построить».27-31 – объявление переменных. В 33 указывается путь к файлу Result.dat . 34 строка – процедура связывания файла с файловой переменной. 35 – открытие файла. 36 – обнуляем x. 37-42 – цикл с предусловием: пока файл не закончится, считывается байт и отображается на экране, номер байта инкрементируется.
9 Результаты машинного тестирования
График построен на языке Delphi в среде программирования Borland Delphi 7. Нумерация осей в десятичной форме.
Рисунок 4 – График
Файл открыт с помощью редактора HexWorkshop, числа отображены в 16-тиричной форме.
Рисунок 5 – Канальный файл
Заключение
Результатом выполнения курсового проекта является программа, реализующая выборку определенных номеров битов с помощью набора команд процессора Intel 80386.
Главной целью выполнения данного курсового проекта является получение навыка непосредственной работы с информацией на уровне байтов и битов. Также в процессе выполнения задания была освоена специфика директивы задания набора допустимых команд, открыты новые приемы алгоритмизации и закреплены полученные ранее знания в области языка Delphi.
Список используемых источников
Мурлин А.Г. Микропроцессорные системы. Методические указания к курсовому проекту для студентов всех форм обучения специальности 351400 – Прикладная информатика (по отраслям) / КубГТУ; Краснодар, 2007. - 19 с.
Юров В.И. Assembler. Учебник для вузов. 2-е издание – СПб.: Питер, 2006. – 637 с.
Зубков С.В. Assembler для DOS, Windows и Unix. 3-е издание – М.: ДМК Пресс; СПб.: Питер, 2004. – 608 с.: ил.
Пирогов В.Ю. Assembler. Учебный курс. 3-е издание - М.: Нолидж, 2001. – 848 с.: ил.
Фаронов В.В. Turbo Pascal 7.0. Начальный курс. 7-е изд., перераб. – М.: Нолидж, 2002. – 576 с.: ил.
Приложение А
.386
assume CS:CodeSg, DS:DataSg, SS:StackSg
CodeSg segment use16
begin: mov AX, DataSg
mov DS, AX
;
Call OpenUK
Call CreateMY
push DS
pop ES
mov cx, 5
metka1:
push cx
Call Find0
pop cx
dec cx
cmp cx,0
jne metka1
Call RecordMY
Call CloseUK
Call CreateRESULT
Call FormWord
Call CloseMY
Call CloseRESULT
mov ah,10h
int 16h
int 20h
OpenUK:
mov ah, 3dh
mov al, 0
lea dx, [UK]
int 21h
mov [dUK],ax
ret
CreateMY:
mov ah, 3ch
mov cx, 0
lea dx, [MY]
int 21h
mov [dMY], ax
ret
Find0:
metka:
Call ReadUK
mov cx, 16
lea si, [str0]
lea di, [str1]
repe cmpsb
cmp cx,0
jne metka
ret
ReadUK:
mov ah, 3fh
mov bx, [dUK]
lea dx, [str1]
mov cx, 16
int 21h
ret
RecordMY:
metka2:
Call ReadUK
lea si, [str1]
lea di, [str0]
mov cx, 16
repe cmpsb
cmp cx, 0
je end1
mov ah, 40h
mov bx, [dMY]
mov cx, 16
lea dx, [str1]
int 21h
jmp metka2
end1:
ret
CloseUK:
mov ah,3eh
mov bx,[dUK]
int 21h
ret
CreateRESULT:
mov ah, 3ch
lea dx, [RESULT]
mov cx, 0
int 21h
mov [dRESULT], ax
ret
SetKursor:
mov ah, 42h
mov al, 0
xor cx, cx
mov dx, 3
mov bx, [dMY]
int 21h
ret
ReadMY:
mov ah,3fH
mov bx,[dMY]
lea dx,[bufer1]
mov cx,1
int 21h
ret
SetKursor2:
mov al,1
mov ah,42H
mov bx,[dMY]
xor cx,cx
mov dx,2
int 21h
ret
ReadMY2:
mov bx,[dMY]
lea dx,[bufer1]
mov cx,1
mov ah,3fH
int 21h
ret
RecordInResult:
mov bx,[dRESULT]
mov ah,40h
lea dx,[word1]
mov cx,2
int 21h
ret
SetKursor3:
mov al,1
mov ah,42h
xor cx,cx
mov bx,[dMY]
mov dx,18
int 21H
ret
FormWord:
Call SetKursor
xor di, di
mov cx,640
metka3:
push cx
Call ReadMY
shr [bufer1],2
jc m1
btr [word1], di
inc di
jmp m2
m1:
bts [word1],di
inc di
m2:
Call SetKursor2
Call ReadMY2
shr [bufer1],5
jc m3
btr [word1],di
inc di
jmp m4
m3:
bts [word1],di
inc di
m4:
cmp di,16
jne metka4
Call RecordInResult
mov di,0
metka4:
Call SetKursor3
pop cx
dec cx
cmp cx,0
jne metka3
ret
CloseMY:
mov ah,3eh
mov bx,[dMY]
int 21h
ret
CloseRESULT:
mov ah,3eh
mov bx,[dRESULT]
int 21h
ret
CodeSg ends
DataSg segment use16
UK db 'UK64.dat',0
MY db 'my.dat',0
RESULT db 'result.dat',0
word1 dw ?
str1 db 16 dup (?)
bufer1 db ?
str0 db 16 dup (0)
dUK dw ?
dMY dw ?
dRESULT dw ?
;
DataSg ends
;------------------------------------
StackSg segment stack use16
db 256 dup(0)
StackSg ends
;------------------------------------
end begin
Приложение Б
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart;
type
TForm1 = class(TForm)
Button1: TButton;
Chart1: TChart;
Series1: TLineSeries;
Shape1: TShape;
Label19: TLabel;
Label1: TLabel;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
f:file of byte;
y:byte;
x:integer;
str:string;
begin
str:=ExtractFilePath(Application.ExeName)+'result.dat';
assignfile(f,str);
reset(f);
x:=0;
while not eof(f) do
begin
read(f,y);
Series1.AddXY( x,y,'',clwhite);
inc(x);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Close;
end;
end.