|
||||||||||||
|
||||||||||||
|
|||||||||
МЕНЮ
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Разработка программы при помощи языка низкого уровня ассемблерРазработка программы при помощи языка низкого уровня ассемблерВОЛЖСКИЙ УНИВЕРСИТЕТ ИМЕНИ В.Н. ТАТИЩЕВА Кафедра «Информатика и системы управления» Курсовая работа по дисциплине: «Организация ЭВМ» Вариант - 107
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]<max то ререход на след элемент 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, работы с одномерными и двухмерными массивами, тестирование состояние флагов. Основные принципы и навыки работы с компилятором и отладчиком. Разработана схема алгоритма программы и реализована на языке низкого уровня ассемблер. Список литературыКаган Б. М. Электронные вычислительные машины и системы. Учебное пособие для вузов. - М.: Энергоатомиздат, 1991. Ефремов В.Д., Мелехин В.Ф., Дурандин К.П. и др. Вычислительные машины и системы. Учебник для вузов - 2М.: Высшая школа, 1994. Ларионов А.М., Майоров С.А., Новиков Г.И. Вычислительные комплексы, системы, сети.// Учебник для вузов. - Л.: Энергоатомиздат, 1987. Микропроцессоры: в 3-х кн.: Учебник для вузов. /Под ред. Л.И.Преснухина - М.: Высшая школа, 1986. МикроЭВМ: в 8 кн. /Под ред. Л..Преснухина. - М.: Высшая школа, 1988. Соловьев Г.Н. Арифметические устройства ЭВМ. - М.: Энергия, 1978. Смирнов А.Д Архитектура ВС./ Учебное пособие для вузов. - М.: Наука.: Гл. ред. Физ.-мат.- лит., 1990. Головкин Б.А. Параллельные вычислительные системы. - М.: Наука: Гл. ред. Физ.-мат. Лит., 1980. Компьютеры на СБИС в 2-х кн.: пер. с японского/ Т.Мотоока, Х.Тонака и др./ - М.: Мир, 1980. |
РЕКЛАМА
|
|||||||||||||||||
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА | ||
© 2010 |