Ассемблер

Ассемблер

Ассемблер
Волжский университет имени В.Н.Татищева
Факультет “Информатика и телекоммуникации”
Кафедра “Информатика и системы управления”

КУРСОВАЯ РАБОТА
по дисциплине “Организация ЭВМ ”
Тема “Ассемблер”

Выполнил студент гр. ИС-311
Руководитель

Тольятти
Содержание курсовой работы

Описание и схема алгоритма.
Область применения.
Листинг программы с комментариями.
Список литературы.

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

«