Разработка программного обеспечения на языке низкого уровня - ассемблер. Дипломная (ВКР). Информационное обеспечение, программирование.

Разработка программного обеспечения на языке низкого уровня - ассемблер. Дипломная (ВКР). Информационное обеспечение, программирование.




💣 👉🏻👉🏻👉🏻 ВСЯ ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻


























































Информационное обеспечение, программирование

Вы можете узнать стоимость помощи в написании студенческой работы.


Помощь в написании работы, которую точно примут!

Похожие работы на - Разработка программного обеспечения на языке низкого уровня - ассемблер

Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе

Нужна качественная работа без плагиата?

Не нашел материал для своей работы?


Поможем написать качественную работу Без плагиата!

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


ХАРЬКОВСКИЙ
ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ РАДИОЭЛЕКТРОНИКИ




















Тема:
"Разработка программного обеспечения на языке низкого уровня -
ассемблер"








Пояснительная записка содержит в себе стр., 2 приложения.


При выполнении курсовой работы на тему "Разработка программного
приложения на языке низкого уровня - ассемблер" ставилась обучения
программированию на уровне процессора с использованием стандартных функций.


Метод исследования - изучение литературы, составления и отладка
приложения


Разработанная программа служит наглядной иллюстрацией техники создания DOS приложения.


Для программной реализации проекта использовалась среда программирования MS-DOS


КЛЮЧЕВЫЕ СЛОВА: процедура, оператор, ячейка, отладчик программы,
приложение, адрес , директива.







1. Анализ, постановка задачи, этапы
создания


. определения которые будут
встречатьса в программе


4.1 Установка программы и запуск
программы


После создания процессора 8086 фирма Intel разработала более совершение
процессоры объединенные под названием I 80x86, такое название означает, что все
команды микропроцессора, которые выполняются на младших моделях обязательно ,
значит все ПО, которые разработаны для процессора 8086 успешно будут работать и
на последних моделях 80486 и Pentium. Ми будем рассматривать процессоры с точки
зрения программиста. Не смотря на разнообразность моделей процессоров, наиболее
важным с точки зрения биологии программирования, есть 8086 як базовая модель и
80386 , як перший процессор фирмы Intel, который в полном объеме реализовал
принцип многозадачности.







Программирование на языке ассемблер считается сложною задачею, причины
его такие:


1. Язык ассемблер любого процессора
существенно сложнее любого языка высокого уровня. Чтоб воспользоваться всеми
возможностями языка ассемблер, нужно, по крайней мере, найти команды микропроцессора,
а их число со всеми возможными вариантами перевешает 100, их количество
значительно превышает количество операторов и ключевых слов других языков
высокого уровня. Проблема усложняется еще тем, что изменения в ассемблере
возникают намного быстрее, чем в языках высокого уровня, это связано с
появлением новых микропроцессоров и соответственно новых команд.


2. Программист, который использует язык
ассемблер должен сам следить за распределением памяти и вместо регистров, чтоб
корректно разделять и управлять памятью. В языках высокого уровня это делается
автоматически с помочью компилятора, но это обстоятельство имеет преимущество:
можно оптимально расположить данные в памяти, обеспечить максимальную скорость
выполнения и минимальную длину программы.


3. Программы на языке ассемблер тяжелее
проектировать и настраивать, нужно все время помнить, что конкретно находиться
в каждом из регистров в данной ячейки памяти. Принято считать, что разработка
программы только на языке ассемблер, некоторого процессора, даже если он
распространенный не рекомендуется. Понятно, что любую программу можно написать
только с помощью ассемблера, но для этого нужно использовать намного больше
количество команд и время, которое пойдет на ее выполнение и настройку будет
намного больше, чем для языка высокого уровня. Намного выгодней написать
программу на языке высокого уровня, а наиболее критические части быстрого
действия писать на языке ассемблер.


Реализовать программы поднесения чисел к степени чисел над полем за основанием
2 (mod 2) на С++ на Ассемблере и сравнить
время выполнения задачи в обоих кодах, и сделать вывод.


Возведение в степень может быть выполнено эффективно двойным методом,
выделенным ниже.


Вход
положительное целое число , полевой элемент


.
Пусть k = k r k r -1 ... k 1 k 0 будет двоичным представлением числа , где старший бит равен 1.


.2 Если k i = 1 тогда установить x ¬ a x.


Разработка программы на языке ассемблер включает в себя.


1) Подготовка начального текста
программы на ассемблере;


2) Ассемблирование программы (получение
объектного кода);


3) Компоновка программы (получение
выполненного файла);


4) Отладка программы (нахождение
ошибок).


Первые компьютеры "знали" один язык - машинный. Рассмотрим
характеристики этого языка. Конструкциями машинного языка являются константы и
команды. Команды содержат код команды и адреса данных, которые используются в
командах. Структура 4-х адресной команды






Большинство команд выполняется в том порядке, в котором они записаны в
памяти (естественный порядок выполнения команды), поэтому задание четвертого
адреса в большинстве команд не требуется. Так как переменная адресность для
первых компьютеров не поддерживалась, вместо 4-х адресных стали использовать
команды 3-х адресные. Структура 3-х адресной команды






Для реализаций разветвлений в программе в систему команд машины должны
быть добавлены команды безусловного и условного перехода, т.е. уменьшение длины
команды привело к необходимости увеличения числа команд. С увеличением общей
памяти увеличивается размер адреса, т.к. необходимо под адрес отводить место,
достаточное для записи максимального адреса. В этом случае увеличивается размер
команды и всей программы. Кроме того при составлении программ очень часто
результат записывается вместо одного из исходных данных. В этом случае адреса
результата и одного из данных совпадают и можно задать только один адрес.


Получаем 2-х адресную структуру команды.


В литературе есть обоснование и первого и второго форматов команд. В
настоящее время используются оба формата для разных типов процессоров. Т.к.
результат помещается вместо одного из данных, могут потребоваться команды
пересылки данных для создания их копии.


Заметим, что операторы языка С вида <Переменная> <Знак
операции> <Выражение> как раз отражают эту ситуацию и программируются
одной командой после вычисления <Выражения>. Оператор вида
<Переменная> = <Переменная> <Знак операции> <Выражение>
программируется несколькими командами (почему?).


Доступ к памяти требует значительно больше времени, чем выполнение
операции процессором. Для уменьшения потерь памяти используется фиксированная
ячейка, называемая Accumulator, доступ к которой значительно быстрее, чем к
обычной ячейке памяти за счет того, что она одна и за счет аппаратной
реализации. В этом случае в команде задается только один адрес, второе данное и
результат получаются в фиксированной ячейке.


Заметим, что некоторые команды требуют задать только один адрес без
использования аккумулятора, например, команда увеличения на 1 содержимого
памяти.


Так оператор С x++ означает использование одноадресной команды вместо
двухадресной сложения (x+=1) или нескольких команд в случае x=x+1.


В систему команд должны быть добавлены команды для обмена данными между
аккумулятором и памятью. Недостаток одноадресных команд - основную часть
программы составляют команды пересылки данных.


В современных процессорах вместо одной фиксированной ячейки (регистра)
используется несколько, в этом случае в команде задается адрес данного и
регистр, т.е. опять возвращаемся к двух адресной структуре команды.


Некоторые из команд не требуют задания адреса, например, команда СТОП (Halt) для процессора. В случае
использования команд с данными можно использовать стек для хранения данных, в
этом случае адреса данных можно не задавать. Стек - это массив, заполнение и
извлечение данных для которого выполняется по правилу "Первый вошел,
последний вышел". В этом случае данные для операции записываются в стек.
Результат помещается вместо этих данных.


Для упрощения распределения памяти и запоминания кодов команд вместо
машинных кодов используются их обозначения, а вместо конкретных адресов -
символические адреса. Символические коды для основных операций заданы в табл.
4.1




Таблица 4.1 Мнемонические коды арифметических команд




+ 0 : X+ 1: Y+ 2 : Z+ 3 : U+ 4 : V + 5 : W




Пусть программа занимает ячейки P + 0, P + 1, …


Пусть в качестве ячеек для промежуточных данных используются R + 0, R +
1, …


Текст программы с учетом принятых обозначений задан в табл. 5.1.




Пусть D= 0. В этом случае программа начинается с ячейки после D + 5, т.е.
с ячейки 6. (P = 6). Промежуточные данные можно располагать, начиная с P + 5,
т.е. R = 11. Преобразование кодов и адресов в машинные коды и адреса
выполняется специальной программой.
3. Определения которые будут встречаться в программе


Tiny (файл
*.com). модель памяти. При этом регистры CS, DS, SS содержат одинаковых значений. Это наиболее компактная модель памяти. Размер памяти не может
превышавать 63Кб. Адресация происходит с помочью смещения и меток . Так как
программы на ассемблере не большая, то это не есть большим ограничением . Эта
модель широко используется, особливо в резидентных программах.-- длина строки
ввода (5 символов)-- структура для строкового ввода (исп.в функции 0Ah
прерывания 21h)


Данные:-- строка приглашения ввода данных_A / Msg_K -- ->>-
->>- ввода значения основания / степени_Res -- строка приглашения вывода
числа-- последовательность перехода на новою строку_A / Str_K -- структура для
хранения текстового значения основания / степени_A / Int_K -- ячейки памяти
размерности СЛОВО для хранения двоичного значения основания / степени_Pow --
строка хранящая текстовое представление вычисленной степенной функции


Процедура ожидания нажатия любой клавиши на клавиатуре


Процедура отображения строкового сообщения на экране (до символа '$').


В DS:DX передается адрес выводимой на экран строки.


Символ с кодом 13 (0Dh) осуществляет переход на начало строки.


Символ с кодом 10 (0Ah) осуществляет переход на новую строку.


Процедура ввода данных со клавиатуры в строковой буфер с ограничением
длины ввода. В DS:DX передается адрес структуры ввода (см. определение
структуры string)


Процедура проверки являются ли все символы строки десятичными цифрами.
Уст. флаг CF при ошибке. Адрес строки для проверки в SI.I2


Процедура преобразования числа размерности в слово из строкового вида в
двоичный. При выходе за границы размерности уст. флаг CF.


Адрес строки для проверки в SI. Результат в AX.Str


Процедура преобразования числа из двоичного вида в строковый.


Исходное число в регистровой паре BX:AX, сохранение в строку с адресом в
SI.


Процедура возведения числа с основанием в SI в степень со значением в CX.


Результат сохраняется в регистровой паре BX:AX.







Для работы с программой необходимо выполнить следующие шаги:


·       скопировать в какой-либо каталог файл power.exe;


·       Вводим значение полевого элемента A.


·       Вводим значение степенного элемента k.


Для нормальной работы данной программы требуется IBM :


·       8086, 80186, 80286, 80386, 80486, Р5 (Pentium), MMX, P6 (Pentium Pro и Pentium II).


·       операционная система MS DOS.







Enter A: 128 Temp: 0.001cekk: 3: 2097152







В процессе курсовой работы была изучена техника программирования на языке
ассемблер. В качестве системы программирования была использована MS DOS. В сравнительной характеристике с кодом С++,
асемблерский код показал не значительно, но меньшее время выполнения задачи.
Значит, язык ассемблер может использоваться в тех случаях, когда надо повысить
скорость выполнения программ.







.Конспект лекций с курса программирования на языке ассемблер;


4. IEEE P1363 / D13 (Draft Version 13). Standard
Specifications for Public Key Cryptography.







//---------------------------------------------------------------------------


//---------------------------------------------------------------------------


{A;int
k;<<"Y=A^x"<>A;<<"Put k: ";>>k;r=0;long int Buffer=k;(Buffer){Buffer>>=1;r++;}-;=A;Mask=1;(int
i=0;i_K string <>_A dw 0_K dw 0_Pow db 16
dup (0)


;--------------------------------------------------------------------------


;--------------------------------------------------------------------------procah,0
;иначе - прочитать клавишуendp


;--------------------------------------------------------------------------proc
;[IN] DS:DX - adress of string with forwarding '$'


;--------------------------------------------------------------------------proc
;[IN] DS:DX - adress of string structure ah,0Ah ;осуществляет
переход на новую строку


;--------------------------------------------------------------------------I2
proc ;[IN] SI - string type, [OUT] AX - value; CF - if
falsech,chcl,[si].lendi,[si].valax,axbx,10


@@1:bxdx,0@@2dl,[di]dl,0Fhax,dx@@2di@@1


;--------------------------------------------------------------------------proc
;[IN] SI - string type; [OUT] CF - if falsech,chcl,[si].lendi,[si].val


@@1:byte ptr [di],'9'@@2byte ptr [di],'0'@@2di@@1


;--------------------------------------------------------------------------Str
proc ;[IN] BX:AX - number; SI - string to save ($)si


@@1:axdx,dxax,bxcx,10000cxbx,ax ;<- 1 chastnoe v
bxaxcxaxax,dx cx,4 ;<- 4 cyfry@@Paxax,0@@1bx,0@@1


@@2:sibyte ptr [si],'0'@@2disicx,sicx,dicx,1@@4


@@3:al,[si]ah,[di][si],ah[di],aldisi@@3


@@P:dx,dxdi,10didl,30h[si],dlsi@@PStr endp


;--------------------------------------------------------------------------proc
;[IN] SI - base; CX - power [OUT] BX:AX - numberax,axdx,dxsi,0@@exit


@@2:ax ;x=x*xbx,1 ;ki == 1 ?@@3 ;no -> jumpsi ;x=a*x


;--------------------------------------------------------------------------:ax,@datads,axdx,MsgDispMsg


@@1:dx,Msg_ADispMsgdx,Str_AReadStrsi,Str_AIsDigit@@1Str2I2@@1Int_A,axdx,CrLfDispMsg


@@2:dx,Msg_KDispMsgdx,Str_KReadStrsi,Str_KIsDigit@@2Str2I2Int_K,ax@@2dx,CrLfDispMsg


;si,Str_PowInt2Strdx,Str_Pow DispMsg


mov ax,4C00h ;конец программы и вывод данных из буфера



Объект
исследования - Изучить язык ассемблер для написания примера программы на
ассемблере для 16 битного приложения (DOS приложение) реализации алгоритма поднесения чисел
к степени чисел над
полем
за основанием 2 (mod 2) Дипломная (ВКР). Информационное обеспечение, программирование.

Методы Анализа Внутренней Среды Организации Курсовая
Методы Построения Научной Теории Реферат
Реферат: Причерноморский экономический район
Реферат На Тему Системы Управления Базами Данных
Виды Внешнеторговых Договоров Реферат
Реферат: Феномен греческой литературы
Реферат: Ремонт сельскохозяйственной техники
Сочинение На Тему Интерьер Моего Класса
Контрольная работа: Производительность труда 3
Реферат: Беавоги, Луи Лансана
Любовь Обломова Сочинение
Реферат по теме Свято Iвана Купала укр
Реферат: Классификация основных методов медицинских исследований. Лабораторные методы исследований
Курсовая работа: Словотвірна парадигма іменників назв овочів, фруктів і злакових культур
Проблема Выражения Благодарности Сочинение Егэ По Пирогову
Сочинение по теме Генри Джеймс. Дейзи Миллер
Дипломная работа: Тесты как средство контроля развития грамматических навыков учащихся 6 класса на уроках английского языка
Реферат: Эволюция философских взглядов Л.Н. Толстого. Скачать бесплатно и без регистрации
Курсовая работа: Туристское предложение и спрос на дестинацию "Индия": страноведческие и региональные аспекты
Рефераты На Тему Правильного Питания
Похожие работы на - Дени Дидро. Биография
Похожие работы на - Опухоли
Дипломная работа: Право в сфере образовательной деятельности

Report Page