Помощь в написании студенческих работ
Антистрессовый сервис

Ассемблер

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Завершающей стадией программы являются вывод переменной у и завершение программы. Вывод переменной осуществляется функцией outword, которая содержится в подключаемом модуле io.asm. Подключение данного модуля осуществляется командной include прописываемая до кода программы. Завершение программы осуществляется стандартным способом по стандартному DOS-кому прерыванию int 21 функцией 4Сh. Ввод… Читать ещё >

Ассемблер (реферат, курсовая, диплом, контрольная)

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

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

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

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

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

Тема: «Ассемблер»

Выполнил: студент гр. ИС-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 функцией 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

Показать весь текст
Заполнить форму текущей работой