РефератыИнформатикаАсАссемблер

Ассемблер

Волжский университет имени В.Н.Татищева


Факультет “Информатика и телекоммуникации”


Кафедра “Информатика и системы управления”


КУРСОВАЯ РАБОТА


по дисциплине: “Организация ЭВМ ”


Тема: “Ассемблер”


Выполнил: студент гр. ИС-311


Руководитель:


Тольятти


Содержание курсовой работы:


1. Описание и схема алгоритма.


2. Область применения.


3. Листинг программы с комментариями.


4. Список литературы.


1. Описание и схема алгоритма


Начало программы начинается с распределения памяти под код программы под данные и под стек. Прописав строку Model
Small
выделяется по 64кБ под данные и под код. В задании нам необходимо работать с 32-х битными переменными для чего прописываем строку .386.


Определившись с основными моментами начинаем ввод переменных. Переменной является x
.


Ввод переменной x
и обработка осуществляется в несколько этапов. Вначале вводится код числа стандартным прерыванием int
21
функцией 0
Ah
, замет берётся каждый символ и преобразуется в десятичное значение и осуществляется определение десятков или единиц соответственно. В результате получаем введённое нами десятичное число.


Следующим этапом является вычисление полинома по формуле у=2* x-6y- 4. Во-первых возводим в квадрат “x”, затем умножаем на 2. Потом суммируем полученные значения и помещаем в переменную у, которая и является ответом данной задачи.


Завершающей стадией программы являются вывод переменной у и завершение программы. Вывод переменной осуществляется функцией outword
, которая содержится в подключаемом модуле io
.
asm
. Подключение данного модуля осуществляется командной include
прописываемая до кода программы. Завершение программы осуществляется стандартным способом по стандартному DOS
-кому прерыванию int
21
функцией
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:


;*********-начало программы-********************************


movdx,@data;начальный адрес в сегмент данных


movds,dx


;*********-Вывод строки-*************************************


movdx,offsetvvx


movah,9h;Вывод строки 'Введите x'


int 21h


;********-Ввод числа-****************************************


mov ah,1h


int 21h


sub al,30h


push ax


;*********-Вывод строки-*************************************


mov dx,offset vvy


movah,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


sbbdx,cx


;Результат DX,AX


xorcx,cx


mov bx,word ptr (four+2) ;dx = Результат


sub ax,bx


sbb dx,cx


;Результат DX,AX


movz,dx


movz+2,ax


;**********-Завершение работы программы-**********************


movdx,offsetotvet;Вывод сообщения "Ответ"


movah,9h


int 21h


outwordz;Процедура вывода


outword z+2


mov ax,4c00h


int 21h


end main


4.Список литературы:


1. Ефремов В.Д., Мелехин В.Ф., Дурандин К.П. и др. Вычислительные машины и системы. Учебник для вузов – 2М.: Высшая школа, 1994.


2. Ларионов А.М., Майоров С.А., Новиков Г.И. Вычислительные комплексы, системы, сети.// Учебник для вузов. – Л.: Энергоатомиздат, 1987.


3. Григорьев В.Л. Микропроцессор i486. Архитектура и программирование. –М.: БИНОМ, 1993

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Ассемблер

Слов:702
Символов:6998
Размер:13.67 Кб.