Ассемблер
Программа для расчета полинома. Описание и схема алгоритма, распределение памяти под код программы, под данные и стек. Схема хранения операций ввода-вывода и их подключение. Изменения стека во время прогона программы. Листинг программы с комментариями.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 02.12.2009 |
Размер файла | 59,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Волжский университет имени В.Н.Татищева
Факультет “Информатика и телекоммуникации”
Кафедра “Информатика и системы управления”
КУРСОВАЯ РАБОТА
по дисциплине: “Организация ЭВМ ”
Тема: “Ассемблер”
Выполнил: студент гр. ИС-311
Руководитель:
Тольятти
Содержание курсовой работы:
1. Описание и схема алгоритма.
2. Область применения.
3. Листинг программы с комментариями.
4. Список литературы.
1. Описание и схема алгоритма
Начало программы начинается с распределения памяти под код программы под данные и под стек. Прописав строку Model Small выделяется по 64кБ под данные и под код. В задании нам необходимо работать с 32-х битными переменными для чего прописываем строку .386.
Определившись с основными моментами начинаем ввод переменных. Переменной является x.
Ввод переменной x и обработка осуществляется в несколько этапов. Вначале вводится код числа стандартным прерыванием int 21 функцией 0Ah, замет берётся каждый символ и преобразуется в десятичное значение и осуществляется определение десятков или единиц соответственно. В результате получаем введённое нами десятичное число.
Следующим этапом является вычисление полинома по формуле у=2* x-6y- 4. Во-первых возводим в квадрат “x”, затем умножаем на 2. Потом суммируем полученные значения и помещаем в переменную у, которая и является ответом данной задачи.
Завершающей стадией программы являются вывод переменной у и завершение программы. Вывод переменной осуществляется функцией outword, которая содержится в подключаемом модуле io.asm. Подключение данного модуля осуществляется командной include прописываемая до кода программы. Завершение программы осуществляется стандартным способом по стандартному DOS-кому прерыванию int 21 функцией 4Сh.
Рис. 1. Схема алгоритма.
Модуль ввода-вывода Io.asm.
Вначале рассмотрим схему хранения операций ввода-вывода (ВВ) и подключения их к программам:
Часть операций ввода-вывода реализована в виде процедур, описания которых собраны в отдельном модуле, хранящемся в файле с именем ioproc.asm (текст модуля приведён ниже). Предполагается, что этот модуль заранее оттранслирован и в виде объектного модуля записан в файл с именем ioproc.obj.
Изменения стека во время прогона программы
Стек в данной программе при выводе переменной у нам необходимо было освободить 6 байт стека для вывода числа.
SP -указатель стека. SS - стек.
Приведём пошаговое изменение стека:
SP: 00F0 SS: 00F2 0000
SS: 00F0 3530
SP: 00F2 SS: 00F4 13BA
SS: 00F2 0000
SP: 0F4 SS: 00F6 0000
SS: 00F4 13BA
SP: 00F6 SS: 00F8 00C9
SS: 00F6 0000
SP: 00F8 SS: 00FA 1645
SS: 00F8 00C9
SS: 00FE 0924
SP: 0100 SS: 0102 02B4
SS: 0100 5052
2. Область применения.
Программа применяется для расчета полинома у=2* x-6y- 4. Программа имеет ограничения в применении, потому что в ней применяется расчет одного значения и по одному алгоритму.
3. Листинг программы:
model small
include io.asm
.data
vvx db 10,13,'Введите x: ','$'
vvy db 10,13,'Введите y: ','$'
otvet db 10,13,'Ответ : ','$'
x db 0
two dd 2
four dd 4
six dd 6
z dw 0,0
.stack 256
.386
.code
main:
;*********-начало программы-********************************
mov dx,@data ;начальный адрес в сегмент данных
mov ds,dx
;*********-Вывод строки-*************************************
mov dx,offset vvx
mov ah,9h ;Вывод строки 'Введите x'
int 21h
;********-Ввод числа-****************************************
mov ah,1h
int 21h
sub al,30h
push ax
;*********-Вывод строки-*************************************
mov dx,offset vvy
mov ah,9h ;Вывод строки 'Введите y'
int 21h
;********-Ввод числа-****************************************
mov ah,1h
int 21h
sub al,30h
push ax
;**********-Расчёт полинома-***********************************
pop ax
xor ah,ah
mov bx,word ptr (six+2)
mul bx ;dx,ax=y*6
mov cx,dx
mov bx,ax
pop ax
xor ah,ah
mov x,al
mul x ;ax=al*al
;xor cx,cx
mov dx,word ptr (two+2)
mul dx ;dx,ax:=2*al
sub ax,bx
sbb dx,cx
;Результат DX,AX
xor cx,cx
mov bx,word ptr (four+2) ;dx = Результат
sub ax,bx
sbb dx,cx
;Результат DX,AX
mov z,dx
mov z+2,ax
;**********-Завершение работы программы-**********************
mov dx,offset otvet ;Вывод сообщения "Ответ"
mov ah,9h
int 21h
outword z ;Процедура вывода
outword z+2
mov ax,4c00h
int 21h
end main
4.Список литературы:
Ефремов В.Д., Мелехин В.Ф., Дурандин К.П. и др. Вычислительные машины и системы. Учебник для вузов - 2М.: Высшая школа, 1994.
Ларионов А.М., Майоров С.А., Новиков Г.И. Вычислительные комплексы, системы, сети.// Учебник для вузов. - Л.: Энергоатомиздат, 1987.
Григорьев В.Л. Микропроцессор i486. Архитектура и программирование. -М.: БИНОМ, 1993
Подобные документы
Особенности разработки программы и выбор методов решения задачи. Составление алгоритма, распределение регистров программы и формирование файлов. Описание процедуры очистки памяти, сложения, вычитания, умножения. Тестирование и листинг программы.
лабораторная работа [51,2 K], добавлен 14.05.2011Характеристика программы на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит результаты на экран. Описание переменных в программе, ее блок-схема и алгоритм работы. Листинг программы. Описание входных данных и результат вычислений.
курсовая работа [721,4 K], добавлен 10.11.2010Запись в файл и чтение в С++. Общее понятие о структуре. Многомерные и двумерные массивы. Логика работы программы. Схема алгоритма функции Main. Определение суммарного заработка, сотрудника с наибольшей зарплатой. Создание новой базы, листинг программы.
курсовая работа [275,7 K], добавлен 07.10.2012Написание модуля на языке Ассемблер для вычисления значения выражения. Составление программы корректного ввода исходных данных в таблицу и вывода результата в виде таблицы. Создание модуля для обработки строк и программы корректного ввода исходных данных.
курсовая работа [36,8 K], добавлен 18.09.2010Разработка программы на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит на экран заданную информацию. Типы блок-схем и их использование при написании программы. Описание входных данных и результат вычислений, листинг программы.
курсовая работа [680,3 K], добавлен 03.08.2009Разработка функциональной и принципиальной схемы. Выбор управляющего контроллера. Описание МК PIC16F626, МК AVR, МК 51. Выбор элементной базы. Разработка управляющей программы. Описание алгоритма работы программы. Схема устройства, листинг программы.
курсовая работа [492,9 K], добавлен 28.12.2012Основные сведения о языке программирования Pascal. Листинг программы с комментариями. Диагональ элементов вектора и матрицы. Использование команд ввода-вывода информации. Быстродействие выполнения программы при компиляции. Отражение процессов вычисления.
курсовая работа [1,9 M], добавлен 05.05.2009Изучение категории типов данных, видов выражений и операций, работа на языке Си. Составление программы вычисления значения функции у(х) при произвольном значении х. Блок-схема алгоритма. Описание текста программы и рассмотрение контрольного примера.
лабораторная работа [124,7 K], добавлен 09.01.2012Создание программы, вычисляющей значение функции, заданной таблично при помощи интерполяционного полинома Лагранжа на языке Pascal с комментариями. Диалоговое взаимодействие пользователя с программой, модули для ввода и вывода данных и основных действий.
курсовая работа [49,2 K], добавлен 02.11.2011Программа на языке VBA, которая выводит исходные данные на экран и выполняет расчеты и предназначена для учета на складе мастерской индивидуального пошива. Описание переменных и алгоритма программы. Листинг программы, примеры произведенных расчетов.
реферат [25,4 K], добавлен 10.12.2010