Разработка и отладка подпрограмм на языке Ассемблера
Структурное программирование, схема алгоритма. Программа на языке Си для int, float. Подпрограмма ввода и вывода целых чисел на Ассемблере IBM. Тестирование и отладка, инструкция пользователя. Язык программирования Си (для int и float), этапы трансляции.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 21.10.2014 |
Размер файла | 1,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Язык ассеммблера (англ. assemblylanguage) -- машинно-ориентированный язык низкого уровня с командами, обычно соответствующими командам машины, который может обеспечить дополнительные возможности вроде макрокоманд[1]; автокод, расширенный конструкциями языков программирования высокого уровня, такими как выражения, макрокоманды, средства обеспечения модульности программ[2].
Автокод -- язык программирования, предложения которого по своей структуре в основном подобны командам и обрабатываемым данным конкретного машинного языка[2].
Язык ассемблера -- система обозначений, используемая для представления в удобочитаемой форме программ, записанных в машинном коде. Язык ассемблера позволяет программисту пользоваться алфавитными мнемоническими кодами операций, по своему усмотрению присваивать символические имена регистрам ЭВМ и памяти, а также задавать удобные для себя схемы адресации (например, индексную или косвенную). Кроме того, он позволяет использовать различные системы счисления (например, десятичную или шестнадцатеричную) для представления числовых констант и даёт возможность помечать строки программы метками с символическими именами с тем, чтобы к ним можно было обращаться (по именам, а не по адресам) из других частей программы (например, для передачи управления)[3].
Перевод программы на языке ассемблера в исполнимый машинный код (вычисление выражений, раскрытие макрокоманд, замена мнемоник собственно машинными кодами и символьных адресов на абсолютные или относительные адреса) производится ассемблером -- программой-транслятором, которая и дала языку ассемблера его название.
Команды языка ассемблера один к одному соответствуют командам процессора. Фактически, они и представляют собой более удобную для человека символьную форму записи -- мнемокоды -- команд и их аргументов. При этом одной команде языка ассемблера может соответствовать несколько вариантов команд процессора[4].
Кроме того, язык ассемблера позволяет использовать символические метки вместо адресов ячеек памяти, которые при ассемблировании заменяются на вычисляемые ассемблером или компоновщиком абсолютные или относительные адреса, а также так называемые директивы (команды ассемблера, не переводимые в машинные команды процессора, а выполняемые самим ассемблером).
Директивы ассемблера позволяют, в частности, включать блоки данных, задать ассемблирование фрагмента программы по условию, задать значения меток, использовать макрокоманды с параметрами.
Каждая модель (или семейство) процессоров имеет свой набор -- систему -- команд и соответствующий ему язык ассемблера. Наиболее популярные синтаксисы языков ассемблера -- Intel-синтаксис и AT&T-синтаксис.
Существуют компьютеры, реализующие в качестве машинного язык программирования высокого уровня (Форт, Лисп, Эль-76). Фактически, в таких компьютерах они выполняют роль языков ассемблера.
1. Системный анализ
Целью курсового проекта является закрепление полученных знаний и профессиональных навыков разработки и отладки подпрограмм на языке Ассемблера. Курсовой проект выполняется в соответствии с этапами разработки программного обеспечения: анализ и постановка задачи для решения на ЭВМ, проектирование, кодирование, отладка и тестирование разработанной программы. Проектирование ведется в соответствии с методологией структурного программирования.
Требуется рассчитать выражение (1):
(1)
Необходимо разработать программы для её вычисления на языках Си, Ассемблер УМ и Ассемблер IBMPC. С клавиатуры вводятся 2 переменные и значения массива, после выполняется расчет 2 констант 2c и (a*a+1) данной функции и расчет z. Далее выполняется вывод результата на экран монитора. Программа состоит из 4-х функций: функция ввода переменных, две функция расчета констант, функция вывода результата.
2. Структурное программирование. Схема алгоритма. Программа на языке Си для int, float
Программа на языке программирования Си для int
#include"stdafx.h"
#include<iostream>
#include<conio.h>
usingnamespacestd;
constint N = 4;
voidraschet(int a, int c, int d[])
{int g, k, l, z;
int Y = 0;
g = 2 * c;
k = a*a + 1;
cout<<"g = "<<"2 * "<< c <<" = "<< g <<endl;
cout<<"k = "<< a*a <<" + 1"<<" = "<< k <<endl;
for (inti = 1; i<= N; i++)
{l = d[i] / 4;
cout<<i<<") "<<"l["<< d[i] <<"] = "<< d[i] <<" / 4 = "<< l <<endl;
z = (g - l) / k;
cout<<" z["<< d[i] <<"] = "<< z <<endl;
Y = Y + z;
cout<<endl;}
cout<<"Y = "<< Y <<endl;}
int main()
{setlocale(LC_ALL, "Russian");
int a, c, d[N];
cout<<"Введите a = ";
cin>> a;
cout<<"Введитес = ";
cin>> c;
cout<<"Введите элементы массива"<<endl;
for (inti = 1; i<= N; i++)
{cout<<"d["<<i<<"] = ";
cin>> d[i];}
raschet(a, c, d);
_getch();
return 0;}
Программа на языке программирования Си для float
#include"stdafx.h"
#include<iostream>
#include<conio.h>
usingnamespacestd;
constint N = 4;
voidraschet(floata, floatc, floatd[])
{float g, k, l, z;
float Y = 0;
g = 2 * c;
k = a*a + 1;
cout<<"g = "<<"2 * "<<c<<" = "<< g <<endl;
cout<<"k = "<<a*a<<" + 1"<<" = "<< k <<endl;
for (inti = 1; i<= N; i++)
{l = d[i] / 4;
cout<<i<<") "<<"l["<<d[i] <<"] = "<<d[i] <<" / 4 = "<< l <<endl;
z = (g - l) / k;
cout<<" z["<<d[i] <<"] = "<< z <<endl;
Y = Y + z;
cout<<endl;}
cout<<"Y = "<< Y <<endl;}
int main()
{setlocale(LC_ALL, "Russian");
float a, c, d[N];
cout<<"Введите a = ";
cin>> a;
cout<<"Введитес = ";
cin>> c;
cout<<"Введите элементы массива"<<endl;
for (inti = 1; i<= N; i++)
{cout<<"d["<<i<<"] = ";
cin>> d[i];}
raschet(a, c, d);
_getch();
return 0;}
Блок схема
Рис. 1
3. Программирование
3.1 Программа на Ассемблере УМ
Ex77 start 0
lda c
mul c2
sta p
ldx c0
lda c0
usl comp c12
jgt art
jeq art
jsubinc
rmox,a;i:=i+1
add c3
rmoa,x
jusl
art lda y
hlt
c word 20
e word 2
c0 word 0
c1 word 1
c3 word 3
c4 word 4
c12 word 12
c2 word 2
y word 0
d word 20
word 12
word 4
word -16
oresb 3
kresb 3
presb 3
inclda e
mul e
add c1
sta k
ldad,x
div c4
sta o
lda p
sub o
div k
add y
sta y
rsub
end Ex77
Блок схема
inc
Рис. 2
3.2 Подпрограмма ввода и вывода целых чисел на Ассемблере IBM
Подпрограмма ввода
Блок схема
Рис. 3
Подпрограмма на языке программирования Ассемблер IBMPC
InputIntproc
mov ah, 0ah
xor di, di
mov dx, offset buff; адресбуфера
int 21h; принимаем строку
movdl, 0ah
movah, 02
int 21h
; выводим перевод строки и обрабатываем
; содержимое буфера
movsi, offset buff+2; берем адрес начала строки
cmpbyteptr [si], "-"; если первый символ минус
jnz ii1
movdi, 1; устанавливаем флаг
incsi; и пропускаем его
ii1: xorax, ax
movbx, 10; основание сc
ii2: movcl, [si]; берем символ из буфера
cmpcl, 0dh; проверяем не последний ли он
jzendin
; если символ не последний, то проверяем его
; на правильность
cmpcl, '0'; если введен неверный символ <0
jler
cmpcl, '9'; если введен неверный символ >9
jaer
subcl, '0'; делаем из символа число
mulbx; умножаем на 10
addax, cx; прибавляем к остальным
incsi; указатель на следующий символ
jmp ii2; повторяем
er: movdx, offseterror; если была ошибка, то выводим сообщение об
; этом и выходим
mov ah,09
int 21h
int 20h; все символы из буфера обработаны число
; находится в ax
endin: cmp di,1; если установлен флаг, то
jnz ii3
negax; делаем число отрицательным
ii3: ret
errordb "incorrect number$"
buffdb 6,7 Dup(?)
InputIntendp
3.2 Подпрограмма на языке программирования Ассемблер IBMPC
Процедура вывода
OutIntprocnear;=====Процедура вывода
testax, ax; проверяем число на знак.
jns oi1
movcx, ax;eсли оно отрицательное, выведем минус и
; оставим его модуль
movah, 02h
mov dl, '-'
int 21h
movax, cx
negax
oi1: xorcx, cx; количество цифр будем держать в CX
movbx, 10; основание сс. 10 для десятеричной и т.п.
oi2: xordx, dx
divbx; делим число на основание сс, в остатке
; получается последняя цифра
pushdx; сразу выводить её нельзя, поэтому сохраним
; её в стэке
inccx
; а с частным повторяем то же самое, отделяя
; от него очередную
testax, ax; цифру справа, пока не останется ноль, что
;значит, что дальше
jnz oi2; слева только нули
;========Вывод=========
mov ah, 02h
oi3: pop dx
adddl, '0'; извлекаем очередную цифру, переводим её в
; символ и выводим
int 21h
loop oi3; повторим ровно столько раз, сколько цифр
; насчитали
ret
OutIntendp
Рис. 4
3.3 Программа на языке программирования Ассемблер IBMPC
.modelsmall
.stack 200h
.data
adb ?
cdb ?
ddb 4 dup (?,?,?,?)
edw ?
fdw ?
ydw ?
tdw 8
D16 db '0123456789ABCDEF'
BUF db 4 DUP (20h),13,10,'$'
str1 db 'Resultat',13,10,'$'
.code
OutIntproc
testax, ax; Проверяем число на знак.
jns oi1
; Если оно отрицательное, выведем
;минус и оставим его модуль.
mov cx, ax
mov ah, 02h
mov dl, '-'
int 21h
movax, cx
negax
; Количество цифр будем держать в CX
oi1:
xorcx, cx
movbx, 10; основание сс. 10 для десятеричной и т.п.
oi2:
xordx,dx
divbx
; Делим число на основание сс.
;В остатке получается последняя цифра.
; Сразу выводить её нельзя,
;поэтому сохраним её в стэке.
pushdx
inccx
; А с частным повторяем то же самое,
;отделяя от него очередную
; цифру справа, пока не останется ноль,
; что значит, что дальше слева только нули.
testax, ax
jnz oi2
; Теперь приступим к выводу.
movah, 02h
oi3:
popdx
; Извлекаем очередную цифру,
;переводим её в символ и выводим.
adddl, '0'
int 21h
; Повторим ровно столько раз,
;сколько цифр насчитали.
loop oi3
ret
OutIntendp
InputIntproc
mov ah,0ah
xordi,di
movdx,offset buff; аддресбуфера
int 21h; принимаем строку
mov dl,0ah
mov ah,02
int 21h; выводим перевода строки
; обрабатываем содержимое буфера
movsi,offset buff+2; берем аддрес начала строки
cmpbyteptr [si],"-"; если первый символ минус
jnz ii1
mov di,1; устанавливаем флаг
incsi; и пропускаем его
ii1:
xorax,ax
mov bx,10; основание сc
ii2:
movcl,[si]; берем символ из буфера
cmp cl,0dh; проверяем не последний ли он
jzendin
; если символ не последний, то
;проверяем его на правильность
cmp cl,'0'; если введен неверный символ <0
jler
cmp cl,'9'; если введен неверный символ >9
jaer
sub cl,'0'; делаем из символа число
mulbx; умножаем на 10
addax,cx; прибавляем к остальным
incsi; указатель на следующий символ
jmp ii2; повторяем
er:; если была ошибка, то выводим
;сообщение об этом и выходим
movdx, offseterror
mov ah,09
int 21h
int 20h
; все символы из буфера
;обработаны число находится в ax
endin:
cmp di,1; если установлен флаг, то
jnz ii3
negax; делаем число отрицательным
ii3:
ret
errordb "incorrect number$"
buffdb 6,7 Dup(?)
InputIntendp
PP1 proc near;---------------------e
mov Al,2
movBL,c
imul BL
cbw
move,AX
cwd
mov AX,0
mov BX,0
ret 6;???
PP1 endp
PP2 procnear;f
mov AX,0
movAL,a
imul AL
cbw
mov DX, 1
add AX, DX
cbw
mov f, AX
cwd
mov AX,0
mov DX,0
ret 6;???
PP2 endp
Begin:
mov ax, @Data
mov ds, ax
callInputInt; вводчислаа
mova,AL
callInputInt; вводчислас
movc,AL
mov SI,0
push SI
l1: call InputInt
pop SI
mov d[SI], AL
add SI,2
cmpSI,t
push SI
jne l1
call PP1;вызовп\п 1
call PP2;вызовп\п 2
mov SI,0
mov CX,4
xor AX,AX
movy,AX
for: mov DX,0
mov AH,0
mov CL,0
movAL,d[SI]
mov BL, AL
cbw
cmp AX,0
jg m2
mov CL,1
mov AL, BL
neg AL
cbw
m2: mov DL,4
idiv DL
cbw
cmp CL,0
je m3
neg AL
cbw
m3: mov BX, e
sub BX,AX
cbw
mov AX,BX
cwd
mov AX, BX
cwd
movBX,f
idiv BX ;AL=AL/f
cbw
mov BX,AX
cwd
mov AX, BX
cwd
movDX,y
add AX, DX
cbw
mov y, AX
add SI,2
cmpSI,t
jne for
mov CX,0
mov AX, y
mov DX, AX;DX:=AX
callOutInt
mov AX,4c00h
int 21h
END begin
Программа на языке программирования Ассемблер IBMPC
Рис. 5
Рис. 6
4. Тестирование и отладка
Входные данные |
Си Int (десятичная СС) |
Си float (десятичная СС) |
Ассемблер УМ (шестнадцатеричная СС) |
Ассемблер IBMPC (десятичная СС) |
|
a = 2 c = 20 d[0] = 20 d[1] =12 d[2] = 4 d[3] = -16 |
29 |
31 |
1D |
29 |
|
a =3 c =30 d[0] =51 d[1] =41 d[2] =24 d[3] =-21 |
20 |
21.625 |
14 |
20 |
|
a = 2 c = 20 d[0] = 20 d[1] = 14 d[2] = 4 d[3] = 16 |
28 |
29.3 |
1C |
28 |
Переведем результат работы Ассемблера УМ в десятичную СС:
1D = 29
14 = 20
1C = 28.
Явно видим, что результат работы программ на Си (для int), Ассемблер УМ и Ассемблер IBMPC совпадают на 100%. Результат работы программ на Си (для float) немного отличается ввиду точности вычислений и отличается от округленного значения максимум на 2 единицы.
5. Инструкция пользователя
Язык программирования Си (для int)
окно с запросом: «Введите а:». Необходимо ввести нужное значение переменной «а», она может быть любым целым положительным или отрицательным числом. Нажимаем Enter.
Далее в этом диалоговом окне появляется запрос: «Введите с:». Необходимо ввести нужное значение переменной «с», она может быть любым целым положительным или отрицательным числом. Нажимаем Enter.
Следующим появится новый запрос: «Введите 4 значений для массива:». Вводим 4 любых значений, которые могут быть любыми целыми положительными или отрицательными значениями. После каждого введенного числа нажимаем Enter.
В конечном итоге в этом диалоговом окне у нас появится запись «y=…». Вместо многоточия будет стоять число-ответ, которое получилось в результате подстановки в выражение (1) введенные Вами значений «а», «с» и значений массива «d[0]», «d[1]», «d[2]», «d[3]». Ответ будет целым положительным или отрицательным числом.
Язык программирования Си (для float)
При запуске программы на языке программирования Си, появится диалоговое окно с запросом: «Введите а:». Необходимо ввести нужное значение переменной «а», она может быть любым целым или десятичным положительным или отрицательным числом. Нажимаем Enter.
Далее в этом диалоговом окне появляется запрос: «Введите с:». Необходимо ввести нужное значение переменной «с», она может быть любым целым положительным или отрицательным числом. Нажимаем Enter.
Следующим появится новый запрос: «Введите 4 значений для массива:». Вводим 4 любых значений, которые могут быть любыми целыми или десятичным положительными или отрицательными значениями. После каждого введенного числа нажимаем Enter.
В конечном итоге в этом диалоговом окне у нас появится запись «y=…». Вместо многоточия будет стоять число-ответ, которое получилось в результате подстановки в выражение (1) введенные Вами значений «а», «с» и значений массива «d[0]», «d[1]», «d[2]», «d[3]». Ответ будет целым или десятичным положительным или отрицательным числом.
Язык программирования Ассемблер УМ
Записываем код программы при помощи стандартного приложения «Блокнот» в формате *.txt. При описании данных мы сразу должны задать значения для переменных «а», «с» и сразу задать значения массива, которые имеют размер в 1 слово.
Открываем этот файл в программеTCom.exe при помощи вкладки «Asm», далее в отрывшемся окне выбираем вкладку «File» затем «Open» и находим нужный файл с кодом в формате *.txt. Код программы загрузится на вкладку «Sourcemodule». Нажимаем на вкладку «GoAsm», если в коде нет ошибок, то приложение выведет синюю запись «Noerrorsdetected!» Далеезагружаеммодульпрограммывпрограмме.
TCom.exe при помощи вкладки «Load» в основном окне.
Запускаем программу при помощи клавиши «Start» в основном окне.
Результат подстановки значений «а», «с» и массива «d» в выражение (1) будет находиться в Аккумуляторе, который располагается во втором поле программе TCom.exe(смотреть рис. 1). Значением Аккумулятора будет число в шестнадцатеричной СС.
Язык программирования Ассемблер IBMPC
Запускаем эмулятор DOSBox 0.74. С его помощью переходим на необходимый диск (используем команду «mountc», смотреть рис. 2 (файл находится на диске С в папке с название «1», название файла «сс»)) и отрываем папку, в которой расположен файл с кодом программы в формате *.asm, компоновщик tasm.exeи редактор связей tlink.exe (ОБЯЗАЕЛЬНОЕ УСЛОВИЕ: все 3 файла должны быть в 1(!) папке).
Рис. 7
Далее в эмуляторе DOSBox 0.74 вводим «tasm.exe<название файла>..asm». Таким образом мы даем команду скомпилировать код и показать ошибки, если они есть. Если их нет, то эмулятор выведет отсутствие сообщений об ошибке и предупреждений. В результате удачной компиляции будет создан файл формата *.obj.
Продолжаем вводить в окно эмулятора DOSBox0.74 команды. Вводим «tlink.exe<название файла>.obj». Этой командой мы создаем приложение, которое далее будет считать наше выражение. Если все прошло удачно, то DOSBox 0.74 выдаст об этом сообщение. В результате будет создан файл формата *.exe.
Рис. 8
программирование ассемблер язык тестирование
Последний этап трансляции. Вводим «<название файла>.exe». В окне DOSBox 0.74 появится приглашение ко вводу, вводим значения переменныхи массива, которые могут быть целыми положительными или отрицательными числам, в следующей последовательности: а, c, d[0], d[1], d[2], d[3]. Между каждым введенным значением жмем Enter.
Последняя появившаяся строка - ответ, который будет целым положительным или отрицательным числом.
6. Параметры программы
Язык программирования Си (int)
Объем папки со всеми файлами, созданными при компиляции = 14 Мб
Объем документа с кодом = 962 байт
Средняя продолжительность компиляции = 2.5 сек
Время расчета ответа = крайне мало, менее 1 сек
Язык программирования Си ( float)
Объем папки со всеми файлами, созданными при компиляции = 14 Мб
Объем документа с кодом =1003 байта
Средняя продолжительность компиляции = 1.52 сек
Время расчета ответа = крайне мало, менее 1 сек
Язык программирования Ассемблер УМ
Объем документа с кодом =664 байт
Среднее время компиляции и расчета ответа = 15 сек.
Язык программирования Ассемблер IBMPC
Объем папки со всеми файлами, необходимыми и созданными при компиляции = 203 142 байт
Объем документа *.asm = 6 594 байт
Объем документа *.obj = 707 байт
Объем документа *.exe =924 байт
Средняя продолжительность компиляции = крайне мало, менее 1 сек
Время расчета ответа = крайне мало, менее 1 сек
Заключение
В ходе выполнения проекта, мы работали с тремя языками программирования: Си, языком Ассемблера для Учебной Машины и языком Ассемблера IBMPC на базе архитектуры Intel 8086.
В ходе проекта были изучены некоторые аспекты языка Ассемблера и ЭВМ в целом. Для того, чтобы решить поставленную задачу, были продуманы алгоритмы ее решения на языках программирования Си, Ассемблер УМ и Ассемблер IBMPC, составлены блок-схемы этих решений и написаны программы на каждом из языков программирования. В результаты были получены рабочие программы, которые способны решить поставленную задачу, и примеры их работы.
Думаю, что для расширений возможностей данных программ можно попробовать написать программу на языке Си со вставкой на языке Ассемблера, что позволит сократить некоторое количество времени при написании и отладке программы только на языке Ассемблера IBMPC.
Список использованной литературы
1. Галисеев Г. В. Ассемблер для Win 32. Самоучитель. -- М.: Диалектика, 2007. -- 368 с. -- ISBN 978-5-8459-1197-1.
2. Зубков С. В. Ассемблер для DOS, Windows и UNIX. -- М. ДМК Пресс; СПб. Питер, 2006. -- 608 с. -- ISBN 5-94074-259-9.
3. Кип Ирвин. Язык ассемблера для процессоров Intel = AssemblyLanguageforIntel-BasedComputers. -- М.: Вильямс, 2005. -- 912 с. -- ISBN 0-13-091013-9.
4. Калашников О. А. Ассемблер? Это просто! Учимся программировать. -- СПб.: БХВ-Петербург, 2007. -- 384 с. -- ISBN 978-5-94157-709.
Размещено на Allbest.ru
Подобные документы
Разработка прикладного программного обеспечения для решения задачи для персонального компьютера. Структура подпрограммы, механизмы передачи параметров и возврат результатов из подпрограммы. Вызов подпрограммы на выполнение. Отладка программы на языке С.
курсовая работа [818,1 K], добавлен 03.01.2014Ознакомление с возможностями языка Си как средой программирования высокого уровня. Циклы программирования параметрического оператора for и функции форматированного ввода. Разработка программы средствами Си: блок-схема, текст и тестирование программы.
контрольная работа [204,4 K], добавлен 26.01.2013Язык программирования Турбо Паскаль. Запись алгоритма на языке программирования и отладка программы. Правила записи арифметических выражений. Стандартное расширение имени файла, созданного системным редактором. Составной оператор и вложенные условия.
курсовая работа [75,0 K], добавлен 21.03.2013Обработка сложных структур данных как одна из наиболее распространенных возможностей применения языка программирования С++. Преимущества использования подпрограмм. Передача параметров, одномерных и двумерных массивов, функции и их возврат в функцию.
курсовая работа [1,1 M], добавлен 24.11.2013Разработка алгоритма синтеза пленочного резистора по заданным параметрам исходного резистора, программы реализации данного алгоритма на языке С++. Отладка и тестирование программы, составление документации и инструкции пользователя данной программой.
курсовая работа [1,7 M], добавлен 08.06.2009Приемы работы с инструментальной средой программирования С++. Кодирование арифметических и логических выражений с использованием стандартных библиотечных функций ввода, вывода в С++. Описание переменной вещественного типа в языке программирования С++.
лабораторная работа [137,9 K], добавлен 13.06.2014Символы, целые, числа с плавающей точкой в языке Си. Машинное представление значений типа char, double, float, беззнаковых чисел. Представление целых чисел в позиционных системах счисления с произвольным основанием. Алгоритм перевода b-ичной записи.
презентация [296,3 K], добавлен 05.01.2014Решение задач прикладного программирования. Оформление разработанных алгоритмов в виде графических схем. Написание программ с использованием подпрограмм, их отладка. Блок-схемы и листинг программ. Наборы тестов для отладки разработанных программ.
курсовая работа [575,8 K], добавлен 06.12.2013Разработка программы обработки числовых последовательностей с кодом на языке Pascal. Функции ввода пользователем с клавиатуры последовательности целых чисел. Алгоритмы разработанных процедур и функций. Инструкция пользователя, листинг программы.
курсовая работа [677,7 K], добавлен 13.07.2010Описание математической модели, таблицы истинности. Разработка программы, реализация защитного программирования. Отладка и тестирование программы, инструкция пользователя. Расчет затрат на разработку и коммерческой эффективности проекта от реализации.
дипломная работа [3,2 M], добавлен 18.06.2012