Реферат по предмету "Информатика, программирование"


Разработка программы при помощи языка низкого уровня ассемблер

ВОЛЖСКИЙУНИВЕРСИТЕТ ИМЕНИ В.Н. ТАТИЩЕВА
Кафедра«Информатика и системы управления»
Курсоваяработа
подисциплине: «Организация ЭВМ»
Вариант — 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.


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.