Разработка программного обеспечения на языке низкого уровня - ассемблер
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
)-- структура для строкового ввода (исп.в функции 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.
4. Руководство пользователя
4.1 Установка программы и запуск программы
Для работы с программой необходимо выполнить следующие шаги:
скопировать в какой-либо каталог файл power.exe;
запустить программу
4.2 Работа с программой
Вводим значение полевого элемента 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
#include
#include
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsusedmain()
{A;int k;=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 _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