Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Топ:
Оснащения врачебно-сестринской бригады.
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Интересное:
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Дисциплины:
2020-04-01 | 197 |
5.00
из
|
Заказать работу |
|
|
Программирование на языке ассемблер
Программирование на языке ассемблер считается сложною задачею, причины его такие:
1. Язык ассемблер любого процессора существенно сложнее любого языка высокого уровня. Чтоб воспользоваться всеми возможностями языка ассемблер, нужно, по крайней мере, найти команды микропроцессора, а их число со всеми возможными вариантами перевешает 100, их количество значительно превышает количество операторов и ключевых слов других языков высокого уровня. Проблема усложняется еще тем, что изменения в ассемблере возникают намного быстрее, чем в языках высокого уровня, это связано с появлением новых микропроцессоров и соответственно новых команд.
2. Программист, который использует язык ассемблер должен сам следить за распределением памяти и вместо регистров, чтоб корректно разделять и управлять памятью. В языках высокого уровня это делается автоматически с помочью компилятора, но это обстоятельство имеет преимущество: можно оптимально расположить данные в памяти, обеспечить максимальную скорость выполнения и минимальную длину программы.
3. Программы на языке ассемблер тяжелее проектировать и настраивать, нужно все время помнить, что конкретно находиться в каждом из регистров в данной ячейки памяти. Принято считать, что разработка программы только на языке ассемблер, некоторого процессора, даже если он распространенный не рекомендуется. Понятно, что любую программу можно написать только с помощью ассемблера, но для этого нужно использовать намного больше количество команд и время, которое пойдет на ее выполнение и настройку будет намного больше, чем для языка высокого уровня. Намного выгодней написать программу на языке высокого уровня, а наиболее критические части быстрого действия писать на языке ассемблер.
|
Постановка задачи:
Реализовать программы поднесения чисел к степени чисел над полем за основанием 2 (mod 2) на С++ на Ассемблере и сравнить время выполнения задачи в обоих кодах, и сделать вывод.
Возведение в степень может быть выполнено эффективно двойным методом, выделенным ниже.
Вход положительное целое число , полевой элемент
Выход a k.
. Пусть k = kr kr-1... k1 k0 будет двоичным представлением числа , где старший бит равен 1.
. Устанавливаем x a.
. Для i от r - 1 до 0 do
3.1 Установить x x2.
Если ki = 1 тогда установить x a x.
. Выход x.
Этапы создания программы.
Разработка программы на языке ассемблер включает в себя.
) Создание кода программы на С++;
1) Подготовка начального текста программы на ассемблере;
2) Ассемблирование программы (получение объектного кода);
3) Компоновка программы (получение выполненного файла);
4) Отладка программы (нахождение ошибок).
Эти этапы циклически повторяются.
Руководство пользователя
Работа с программой
· Вводим значение полевого элемента A.
· Вводим значение степенного элемента k.
· Получаем результат.
4.3 Системные требования
Для нормальной работы данной программы требуется IBM:
· 8086, 80186, 80286, 80386, 80486, Р5 (Pentium), MMX, P6 (Pentium Pro и Pentium II).
· любая ОЗУ;
· видеокарта SuperVGA;
· операционная система MS DOS.
5. Пример выполненной программы
Пример на С++:
=A^k
А=128 Temp: 0.005cek=3
2097152.
Пример на ассемблере:
A ^ k
Enter A: 128 Temp: 0.001cekk: 3: 2097152
Заключение
В процессе курсовой работы была изучена техника программирования на языке ассемблер. В качестве системы программирования была использована MS DOS. В сравнительной характеристике с кодом С++, асемблерский код показал не значительно, но меньшее время выполнения задачи. Значит, язык ассемблер может использоваться в тех случаях, когда надо повысить скорость выполнения программ.
|
Список использованной литературы
.Конспект лекций с курса программирования на языке ассемблер;
.Глобальная сеть Internt;
. Абель - Ассемблер Для Ibm Pc;
4. IEEE P1363 / D13 (Draft Version 13). Standard Specifications for Public Key Cryptography.
Приложение А
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsusedmain()
{A;int k;<<"Y=A^x"<<endl;<<"Put A: ";>>A;<<"Put k: ";>>k;r=0;long int Buffer=k;(Buffer){Buffer>>=1;r++;}-;=A;Mask=1;(int i=0;i<r-1;i++)Mask<<=1;(Mask)
{*=Buffer;(k&Mask)Buffer*=A;>>=1;
}<<Buffer;();
}
//---------------------------------------------------------------------------
Приложение В
;--------------------------------------------------------------------------
.model tiny
;--------------------------------------------------------------------------
.stack 100h
;--------------------------------------------------------------------------equ 5strucdb strlen+1dbdb strlen+1 dup (?)ends
;--------------------------------------------------------------------------
.data
;--------------------------------------------------------------------------db 13,10,"Operation: A ^ k",13,10,13,10,"$"_A db " ",13,"Enter A: ","$"_K db " ",13,"Enter k: ","$"_Res db 13,10,"Result: ","$"db 13,10,"$"_A string <>_K string <>_A dw 0_K dw 0_Pow db 16 dup (0)
;--------------------------------------------------------------------------
.code
;--------------------------------------------------------------------------procah,0;иначе - прочитать клавишуendp
;--------------------------------------------------------------------------proc;[IN] DS:DX - adress of string with forwarding '$'
mov ah,9; Функция DOS 09h
inth; вывести строку на экран
retnendp
;--------------------------------------------------------------------------proc;[IN] DS:DX - adress of string structure ah,0Ah;осуществляет переход на новую строку
inthendp
;--------------------------------------------------------------------------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
@@2:I2 endp
;--------------------------------------------------------------------------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
@@2:endp
;--------------------------------------------------------------------------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
@@4:sisibyte ptr [si],'$'
@@P:dx,dxdi,10didl,30h[si],dlsi@@PStr endp
;--------------------------------------------------------------------------proc;[IN] SI - base; CX - power [OUT] BX:AX - numberax,axdx,dxsi,0@@exit
;bx,cxcx,15
@@0:bx,1@@1@@0
@@1:ax,si;x=a
@@2:ax;x=x*xbx,1;ki == 1?@@3;no -> jumpsi;x=a*x
@@3:@@2
;
@@exit:bx,dxendp
;--------------------------------------------------------------------------: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
@@3:dx,Msg_ResDispMsg
;si,Int_Acx,Int_K
;Power
;si,Str_PowInt2Strdx,Str_Pow DispMsg
|
call KeyPress
mov ax,4C00h;конец программы и вывод данных из буфера
inthbegin
Программирование на языке ассемблер
Программирование на языке ассемблер считается сложною задачею, причины его такие:
1. Язык ассемблер любого процессора существенно сложнее любого языка высокого уровня. Чтоб воспользоваться всеми возможностями языка ассемблер, нужно, по крайней мере, найти команды микропроцессора, а их число со всеми возможными вариантами перевешает 100, их количество значительно превышает количество операторов и ключевых слов других языков высокого уровня. Проблема усложняется еще тем, что изменения в ассемблере возникают намного быстрее, чем в языках высокого уровня, это связано с появлением новых микропроцессоров и соответственно новых команд.
2. Программист, который использует язык ассемблер должен сам следить за распределением памяти и вместо регистров, чтоб корректно разделять и управлять памятью. В языках высокого уровня это делается автоматически с помочью компилятора, но это обстоятельство имеет преимущество: можно оптимально расположить данные в памяти, обеспечить максимальную скорость выполнения и минимальную длину программы.
3. Программы на языке ассемблер тяжелее проектировать и настраивать, нужно все время помнить, что конкретно находиться в каждом из регистров в данной ячейки памяти. Принято считать, что разработка программы только на языке ассемблер, некоторого процессора, даже если он распространенный не рекомендуется. Понятно, что любую программу можно написать только с помощью ассемблера, но для этого нужно использовать намного больше количество команд и время, которое пойдет на ее выполнение и настройку будет намного больше, чем для языка высокого уровня. Намного выгодней написать программу на языке высокого уровня, а наиболее критические части быстрого действия писать на языке ассемблер.
Постановка задачи:
Реализовать программы поднесения чисел к степени чисел над полем за основанием 2 (mod 2) на С++ на Ассемблере и сравнить время выполнения задачи в обоих кодах, и сделать вывод.
Возведение в степень может быть выполнено эффективно двойным методом, выделенным ниже.
|
Вход положительное целое число , полевой элемент
Выход a k.
. Пусть k = kr kr-1... k1 k0 будет двоичным представлением числа , где старший бит равен 1.
. Устанавливаем x a.
. Для i от r - 1 до 0 do
3.1 Установить x x2.
Если ki = 1 тогда установить x a x.
. Выход x.
Этапы создания программы.
Разработка программы на языке ассемблер включает в себя.
) Создание кода программы на С++;
1) Подготовка начального текста программы на ассемблере;
2) Ассемблирование программы (получение объектного кода);
3) Компоновка программы (получение выполненного файла);
4) Отладка программы (нахождение ошибок).
Эти этапы циклически повторяются.
|
|
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!