Ассемблер
Ассемблер
Волжский университет имени В.Н.Татищева Факультет “Информатика и телекоммуникации” Кафедра “Информатика и системы управления” КУРСОВАЯ РАБОТА по дисциплине: “Организация ЭВМ ” Тема: “Ассемблер” Выполнил: студент гр. ИС-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
|