48656 (608711)

Файл №608711 48656 (Разработка программы при помощи языка низкого уровня ассемблер)48656 (608711)2016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

ВОЛЖСКИЙ УНИВЕРСИТЕТ ИМЕНИ В.Н. ТАТИЩЕВА

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

Курсовая работа

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

Вариант - 107

Содержание

Введение

1 Постановка задачи

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

3 Листинг программы

Заключение

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


Введение

Если коротко, то язык ассемблера — это символическое представление машинного языка.

Все процессы в машине на самом низком, аппаратном уровне приводятся в действие только командами (инструкциями) машинного языка. Отсюда понятно, что, несмотря на общее название, язык ассемблера для каждого типа компьютера свой. Это касается и внешнего вида программ, написанных на ассемблере, и идей, отражением которых этот язык является.

По-настоящему решить проблемы, связанные с аппаратурой (или даже, более того, зависящие от аппаратуры как, к примеру, повышение быстродействия программы), невозможно без знания ассемблера.

Программист или любой другой пользователь может использовать любые высокоуровневые средства, вплоть до программ построения виртуальных миров и, возможно, даже не подозревать, что на самом деле компьютер выполняет не команды языка, на котором написана его программа, а их трансформированное представление в форме скучной и унылой последовательности команд совсем другого языка — машинного. А теперь представим, что у такого пользователя возникла нестандартная проблема или просто что-то не заладилось. К примеру, его программа должна работать с некоторым необычным устройством или выполнять другие действия, требующие знания принципов работы аппаратуры компьютера. И вот здесь-то и начинается совсем другая история.... Каким бы умным ни был программист, каким бы хорошим ни был язык, на котором он написал свою чудную программу, без знания ассемблера ему не обойтись. И не случайно практически все компиляторы языков высокого уровня содержат средства связи своих модулей с модулями на ассемблере либо поддерживают выход на ассемблерный уровень программирования.

Из всего вышесказанного можно сделать вывод, что, так как язык ассемблера для компьютера “родной”, то и самая эффективная программа может быть написана только на нем (при условии, что ее пишет квалифицированный программист). Здесь есть одно маленькое “но”: это очень трудоемкий, требующий большого внимания и практического опыта процесс. Поэтому реально на ассемблере пишут в основном программы, которые должны обеспечить эффективную работу с аппаратной частью. Иногда на ассемблере пишутся критичные по времени выполнения или расходованию памяти участки программы. Впоследствии они оформляются в виде подпрограмм и совмещаются с кодом на языке высокого уровня.


1. Постановка задачи

В данной курсовой необходимо изучить теоретический материал, разработать алгоритм программы и реализовать его при помощи языка низкого уровня ассемблер. Программа должна выполнять следующие функции:

1 Ввод матрицы 4х4

2 Вывод введенной матрицы

3 Создание одномерного массива (первый элемент – минимальный элемент из строки номер 0, второй – максимальный из столбца номер 1 матрицы, третий – минимальный из строки номер 2 матрицы и т.д.)

4 Тестирование созданного массива (если положительные элементы чередуются то вывод на монитор этого массива, иначе вывод соответствующего сообщения).

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

Рисунок 1 – Алгоритм программы

Рисунок 1 продолжение – Алгоритм программы

Рисунок 1 продолжение – Алгоритм программы

Рисунок 1 продолжение – Алгоритм программы

Рисунок 1 продолжение – Алгоритм программы

Рисунок 1 продолжение – Алгоритм программы

3 Листинг программы

model small

include io.asm

.data

add_elem db 10, 13, 'Введите элементы матрицы : $'

ishod_matrix db 10, 13, 'Исходная матрица : $'

preobr_matrix db 10, 13, 'Преобразованная матрица : $'

tab db 10, 13, ' $'

pustie_str db 10, 13, 10, 13, 10, 13,'$'

probel db ' $'

m dw 4 ; размерность квадратной матрицы

matrix dw 4 dup (4 dup (?)) ; матрица

mas1 dw 4 dup(?)

zn_chereduetsa db 10,13,'Знаки чередуются $'

zn_nechereduetsa db 10,13,'Знаки не чередуются $'

.stack 100h

.code

start:

mov ax, @data

mov ds, ax

mov es, ax

;--------------------------------------------------- очистка экрана

mov ah, 06 ; 6-я функция ...

mov al, 0 ; весь экран прокрутить

mov bh, 7 ; с цветами черный-белый

mov dx, 184Fh ; границы экрана: нижний правый...

mov cx, 0 ; ... и верхний левый углы

int 10h ; ... 10-го прерывания

;--------------------------------- установка курсора в верхний левый угол

MOV AH,2 ; 2 функция...

MOV BH,0 ; координаты

MOV DX,0 ; координаты

INT 10H ; ... 10-го прерывания

;--------------------------------- Ввод матрицы --------------------

lea dx, add_elem

mov ah, 09h

int 21h

lea dx, pustie_str

mov ah, 09h

int 21h

lea dx, tab ; выводим смещение на сл. строку для красоты

mov ah, 09h

int 21h

mov cx, 4 ; количество строк

mov bx, 0 ; обнуляем bx - смещение по строкам

m1: ;

push cx ; сохраняем cx - количество строк

mov cx, m ; сl <- количество столбцов(элементов в строке)

mov si, 0 ; обнуляем si - смещение внутри строки(по столбцам)

m2: ; с этой метки начинается ввод элемента в строку

inint matrix[bx][si]

lea dx, probel ; выводим на экран пробел для красоты

mov ah, 09h

int 21h

inc si ; увеличиваем смещение на 1

inc si

loop m2 ; если не равны, значит строка не закончилась т.е. заново вводим

pop cx ; востанавливаем количество строк

mov ax, m ; в al <- размер строки

add bx, ax ; bx=bx+ax (переводим смещение на сл. строку)

add bx, ax

lea dx, tab ; выводим смещение на сл. строку для красоты

mov ah, 09h

int 21

newline

loop m1 ; если не равны значит строки не окончены т.е. заново

;------------------------------------- очистка экрана

mov ah, 06 ; 6-я функция ...

mov al, 0 ; весь экран прокрутить

mov bh, 7 ; с цветами черный-белый

mov dx, 184Fh ; границы экрана: нижний правый...

mov cx, 0 ; ... и верхний левый углы

int 10h ; ... 10-го прерывания

;-------------------------------- установка курсора в верхний левый угол

MOV AH,2 ; 2 функция...

MOV BH,0 ; координаты

MOV DX,0 ; координаты

INT 10H ; ... 10-го прерывания

;-------------------- вывод матрицы на экран

lea dx, ishod_matrix ; исходная матрица -

mov ah, 09h

int 21h

lea dx, tab ; выводим на экран смещение

mov ah, 09h

int 21h

mov cx, m ; количество строк

mov bx, 0 ; номер строки

_m1: ;

push cx ; сохраняем

mov cx, m ; для того чтобы ввести количество столбцов

mov si, 0 ; номер столбца

_m2:

outint matrix[bx][si] ; выводим элемент матрицы

lea dx, probel ; далее выводим пробел

mov ah, 09h

int 21h

inc si; переходим на сл. столбец (элемент строки)

inc si

loop _m2 ; если не конец строки, то заново

pop cx ; востанавливаем количество строк

mov ax, m ;

add bx, ax ; переход на сл. строку матрицы

add bx, ax

lea dx, tab ; выводим на экран смещение

mov ah, 09h

int 21h

loop _m1 ; если не последняя строка, заново

;1- преобразование одномерной матрици

mov cx, m ; количество сок

mov bx, 0; номер строки

xor di,di

_mm1: ;

push cx ; сохраняем

mov cx, m ; для того чтобы ввести количество столбцов

mov si, 0 ; номер столбца

mov dx, matrix[bx][0] ; max=matrix[i][0]

_mm2:

cmp dx, matrix[bx][si] ; если matrix[i][j]

jl bolshe; иначе max=matrix[i][j]

mov dx, matrix[bx][si]

mov mas1[di],dx; mas1=max

bolshe: inc si; переходим на сл. столбец (элемент строки)

inc si

loop _mm2; если не конец строки, то заново

pop cx ; востанавливаем количество строк

mov ax, 8 ;

add bx, ax ; переход на через строку матрицы

add bx, ax

mov ax, 4; переход через элемент матрици mas1

add di, ax

loop _mm1 ; если не последняя строка, заново

;2- преобразование одномерной матрици

mov cx, 2 ; количество стОЛБЦОВ

mov di,2

mov si,2

_m_m1: ;

push cx ; сохраняем

mov cx, m ; для того чтобы ввести количество столбцов

mov bx, 0 ; елемент i=0 j=2 делаю минимальным

mov dx, matrix[bx][si] ;

_m_m2:

cmp dx, matrix[bx][si] ;если [i][j]элемент матрицы > max

jg menshe;

mov dx, matrix[bx][si] ;max= matrix[i][j]

menshe: mov ax, 8 ;

add bx, ax ; переход на сл. стобец матрицы

loop _m_m2; если не конец строки, то заново

mov mas1[di],dx; mas1[i]=max i не четное

pop cx ; востанавливаем количество строк

mov ax, 4 ;

add si, ax ; переход на сл. столбец матрицы

mov ax, 4

add di, ax; переход на след елемет+1

loop _m_m1 ; если не последняя строка, заново

;вывод приеобразованной матрици

lea dx, preobr_matrix ; преобразованная матрица -

mov ah, 09h

int 21h

xor si,si

mov cx,4

L: outint mas1[si] ; ФУНКЦИЯ ИЗ МОДУЛЯ IO ДЛЯ ЗНАКОВЫХ ЧИСЕЛ

lea dx, probel ; далее выводим пробел

mov ah, 09h

int 21h

add si, 2

loop L

; =================-=-=-=-=-=-=-=-= sravnenie elementov matrici

xor si,si

mov cx,3

L_1: mov ax,mas1[si]

imul mas1[si+1] ; умножение i го и i+1 элемента

je znak_necher ; если болше 0 и = то два соседних элемента с одним знаком

add si, 2 ; АДРЕСС= АДРЕСС +2

loop L_1

;=--=-=-=-=-=-=-=-=-=-=vivod soobhsenii-=-=--=-=-=--=-=

znak_cher:

lea dx, pustie_str

mov ah, 09h

int 21h

lea dx, zn_chereduetsa ;вывод сообщения о чередовании знаков

mov ah, 09h

int 21h

jmp exit

znak_necher:

lea dx, pustie_str

mov ah, 09h

int 21h

lea dx, zn_nechereduetsa ;вывод сообщения о нечеродовании знаков

mov ah, 09h

int 21h

exit:

mov ah, 7h ; задержка

int 21h

mov ah, 4ch ; выход в DOS

int 21h

end start


Заключение

В данной курсовой работе был изучен теоретический по работе материал с прерываниями DOS, вводом и выводом чисел при помощи подключаемого модуля IO, работы с одномерными и двухмерными массивами, тестирование состояние флагов. Основные принципы и навыки работы с компилятором и отладчиком. Разработана схема алгоритма программы и реализована на языке низкого уровня ассемблер.


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

  1. Каган Б. М. Электронные вычислительные машины и системы. Учебное пособие для вузов. – М.: Энергоатомиздат, 1991.

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

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

  4. Микропроцессоры: в 3-х кн.: Учебник для вузов. /Под ред. Л.И.Преснухина - М.: Высшая школа, 1986.

  5. МикроЭВМ: в 8 кн. /Под ред. Л..Преснухина. – М.: Высшая школа, 1988.

  6. Соловьев Г.Н. Арифметические устройства ЭВМ. – М.: Энергия, 1978.

  7. Смирнов А.Д Архитектура ВС./ Учебное пособие для вузов. – М.: Наука.: Гл. ред. Физ.-мат.- лит., 1990.

  8. Головкин Б.А. Параллельные вычислительные системы. – М.: Наука: Гл. ред. Физ.-мат. Лит., 1980.

  9. Компьютеры на СБИС в 2-х кн.: пер. с японского/ Т.Мотоока, Х.Тонака и др./ - М.: Мир, 1980.

Характеристики

Тип файла
Документ
Размер
11,09 Mb
Тип материала
Учебное заведение
Неизвестно

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов курсовой работы

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7045
Авторов
на СтудИзбе
259
Средний доход
с одного платного файла
Обучение Подробнее