Ассемблер

4640
знаков
0
таблиц
1
изображение

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

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

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

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

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

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

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

 

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

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

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


Информация о работе «Ассемблер»
Раздел: Информатика, программирование
Количество знаков с пробелами: 4640
Количество таблиц: 0
Количество изображений: 1

Похожие работы

Скачать
91958
12
0

... . В случае выбора пункта «выход», необходимо реализовать завершение работы программы и передачу управления операционной системе DOS. 1.3. Требования техническим и программным средствам Программа выполнена на языке ассемблера 8086 процессора, соответственно ей необходим IBM PC – совместимый компьютер с процессором не ниже 8086, также программа может выполняться на компьютерах с ...

Скачать
22437
1
1

... смещением. После обращения к _fillstring к указателю стека sp добавляются 8 байт, удаляя параметры из стека. Несмотря на то что в этом примере функция _fillstring в действительности написана на языке ассемблера, вызовы функций С и C++ ничем не отличаются. 4.2 Локальные переменные В дополнение к переменным, объявленным в сегменте данных либо общим с программой С и С++, можно использовать локальные ...

Скачать
15665
3
6

... xxxxxxxxxxxx Виконав ст. гр xxxxxx xxxxxxx “___” ________________2005 р. Перевірив xxxxxxxxxx. “___” ________________2005 р. Харків 2005 ЗАТВЕРДЖЕНО xxxxxxxxxxxx Робота з записами мови ассемблера Текст програми xxxxxxxxx – 12 00-01 Харків 2005 РАЗРАБОТКА ТЕКСТА ПРОГРАММЫ Главная программа: LOCALS include defs.inc .model ...

Скачать
37175
0
0

... разрядов масок в регистре I.  Неправильное использование разрядов разрешения прерываний в командах SIM. ВВЕДЕНИЕ В ПРОГРАММНЫЙ РАЗДЕЛ Программный раздел содержит наборы подпрограмм на языке ассемблера для микропроцессоров 8080 и 8085. Каждой подпрограмме предпосланы введение и комментарии; за каждой подпрограммой следует по крайней мере один пример ее использования. Введение содержит следующую ...

0 комментариев


Наверх