Курс лекций для студентов заочного факультета самара
Вид материала | Курс лекций |
Содержание5.ВАРИАНТЫ КОНТРОЛЬНЫХ РАБОТ 5.1.Контрольная работа №1 5.2. Контрольная работа №2 6.Примеры программ |
- Курс лекций для студентов заочного и очно-заочного образования рпк «Политехник», 941.31kb.
- Курс лекций для студентов очного и заочного отделения специальностей 1-25 01 10 коммерческая, 830.45kb.
- Курс лекций для студентов заочного обучения Бурмистрова Л. А., Финансы предприятий:, 1991.45kb.
- Методические указания для студентов 1 курса заочного отделения исторического факультета, 244.82kb.
- В. С. Юрчук философия права курс лекций, 1556.93kb.
- Планы семинарских занятий на 2011-2012 учебный год (6 часов) по предмету «Экономическая, 205.43kb.
- Курс лекций Санкт-Петербург 2007 удк 342. 9 Ббк 67. 401 Б83 Рецензенты, 6052.89kb.
- Тексты лекций для студентов заочной формы обучения всех специальностей москва 2001, 2466.08kb.
- Краткий конспект лекций по дисциплине «Основы лесоводства и лесной таксации» Для студентов, 923.35kb.
- Лекций для студентов 4 курса педиатрического факультета, переведенных на контролируемую, 18.72kb.
5.ВАРИАНТЫ КОНТРОЛЬНЫХ РАБОТ
5.1.Контрольная работа №1
Реализовать ввод элементов массива с контролем допустимых кодов символов и диапазона значений элементов массива. Вывести элементы полученных массивов на экран.
Вариант 1
Из исходного массива двузначных десятичных чисел со знаком получить два новых, поместив в первый из них значения элементов, превосходящих среднее значение массива, а во второй номера этих элементов (среднее = ).
Вариант 2
Из двух исходных массивов двузначных десятичных чисел без знака X и Y cформировать массив Z, поместив в него все элементы исходных, превышающие общее среднее = .
Вариант 3
Из исходного массива двузначных десятичных чисел со знаком получить два новых, поместив в первый из них номера максимальных, а во 2-ой номера минимальных элементов исходного. (Предполагается, что MIN и MAX могут быть не единственными).
Вариант 4
Найдите в массиве двузначных десятичных чисел без знака X все элементы и их номера и поместите эти значения в два новых массива Y - элементов и Z - индексов.
Вариант 5
Из исходного массива X двузначных десятичных чисел со знаком сформировать массив Y- отклонений от среднего () и массив Z- номеров элементов исходного массива, превышающих среднее.
Вариант 6
Выявить все номера элементов массива двузначных десятичных чисел без знака X, превышающих .. В результате сформировать два массива: Y- массив номеров и Z- массив значений, для которых выполняется заданное условие.
Вариант 7
Из исходного массива двузначных десятичных чисел со знаком X получить новый массив Y ().
Подсчитайте среднее = .
Вариант 8
Из исходного массива двузначных десятичных чисел без знака получить два новых, поместив в них значения и номера элементов, для которых выполняется условие
Вариант 9
Из исходного массива двузначных десятичных чисел со знаком X получить два новых Y и Z, таких что:
Вариант 10
Получить из исходного массива X двузначных десятичных чисел без знака два новых Y, Z, поместив в них элементы и номера элементов массива X, для которых выполняется условие .
Вариант 11
Получить из исходного массива X двузначных десятичных чисел без знака два новых Y и Z, поместив в них номера элементов и их значения, для которых выполняется условие .
Вариант 12
Получить из исходного массива X двузначных десятичных чисел со знаком два новых Y, Z, поместив в Y элементы, для которых выполняется условие , а в Z – элементы, для которых выполняется условие
Вариант 13
Из исходного массива X размера n двузначных десятичных чисел без знака получить два новых Y и Z, поместив в Y элементы, значения которых меньше (X1+Xn)/ 2, а в Z - номера этих элементов.
Вариант 14
Из исходного массива X двузначных десятичных чисел со знаком получить два новых Y и Z, поместив в первый из них нечетные значения элементов массива, а во второй – их номера.
Вариант 15
Из исходного X двузначных десятичных чисел без знака получить два новых Y, Z,, поместив в первый из них номера элементов превышающих заданное число А, а во второй - элементы, значения которых меньше среднего в массиве (среднее = ).
Вариант 16
Получить из исходного массива X двузначных десятичных чисел без знака два новых Y и Z, поместив в них элементы и номера, для которых выполняется условие x i <= xi-1 + xi+1.
Вариант 17
Из исходного массива двузначных десятичных чисел без знака X получить два новых Y и Z, таких что:
Вариант 18
Получить из исходного массива X двузначных десятичных чисел со знаком два новых Yb Z, поместив в них элементы и номера элементов массива X, для которых выполняется условие: xi <= xmax – xmin.
Вариант 19
Получить из исходного массива X двузначных десятичных чисел со знаком два новых Y, Z, помеcтив в них номера элементов и их значения, для которых выполняется условие: xi < (xi-1 +xi +xi+1)/3.
Вариант 20
Получить из исходного массива X двузначных десятичных чисел без знака два новых Y и Z, поместив в них элементы и номера, для которых выполняется условие: xi >= (x1 +xn.)/4.
Вариант 21
Из исходного массива X двузначных десятичных чисел со знаком получить два новых Y и Z, поместив в Y элементы, значения которых меньше (xmax-xmin)/ 4, а в Z - номера этих элементов.
Вариант 22
Из исходного массива X двузначных десятичных чисел без знака получить два новых Y и Z, поместив в первый из них четные значения элементов массива, а во второй – нечетные значения элементов.
Вариант 23
Из исходного X двузначных десятичных чисел со знаком получить два новых Y, Z,, поместив в первый из них номера элементов не превышающих заданное число А, а во второй - элементы, значения которых больше среднего в массиве (среднее = ).
Вариант 24
Получить из исходного массива X двузначных десятичных чисел со знаком два новых Y, Z, поместив в них элементы и номера, для которых выполняется условие x i <= (xi-1 + xi+1.)/2.
Вариант 25
Из исходного массива двузначных десятичных чисел без знака получить два новых, поместив в первый из них значения элементов, не превосходящих среднее значение массива, а во второй номера этих элементов (среднее = ).
Вариант 26
Из двух исходных массивов двузначных десятичных чисел со знаком X и Y cформировать массив Z, поместив в него все элементы исходных, не превышающие общее среднее = .
Вариант 27
Из исходного массива двузначных десятичных чисел со знаком получить два новых, поместив в них значения и номера элементов, для которых выполняется условие
Вариант 28
Из исходного массива двузначных десятичных чисел без знака X получить два новых Y и Z, таких что:
Вариант 29
Из исходного массива X двузначных десятичных чисел со знаком получить два новых Y и Z, поместив в первый из них значения нечетных элементов массива, а во второй значения четных элементов.
Вариант 30
Из исходного X двузначных десятичных чисел без знака получить два новых Y, Z, поместив в первый из них номера элементов превышающих заданное число А, а во второй - элементы, значения которых меньше среднего в массиве (среднее = ).
5.2. Контрольная работа №2
Ввести с клавиатуры границы интервала значений аргумента функции, перевести их в формат вещественного числа, рассчитать шаг и вычислить значение функции в заданном интервале. Вывести на экран график функции, таким образом, чтобы он весь умещался на экране, для чего произвести масштабирование вычисленных значений функции в соответствии с размерами экрана в выбранном графическом режиме.
- Y = sin 2x + cos4 x.
- Y = (cos 2x + sin x)/2.
- Y = sin 2x + cos3 x.
- Y = (cos 2x + sin3 x)/3.
- Y = (x* sin3 x)/5.
- Y = x* cos 2x * sin 2x.
- Y = (x2 * sin x)/2.
- Y = x2 * cos2 x* sin x.
- Y = x3 * sin x* cos x.
- Y = (x3 * cos3 x)/3.
- Y = x3 * cos x * sin3 x.
- Y = 3*cos 2x* x4.
- Y =4*sin 3 x*x.
- Y = 2*cos 3 x* x2.
- Y = x* sin 2 x + x2* cos x.
- Y = x* cos2 x+ x3* sin 3 x.
- Y = (sin x + x 2)/2.
- Y =2* (cos2x +x 2).
- Y = x* (sin2 x + x)/2
- Y = 2x* (cos2x +x 2)
- Y = x2 *(cos x +x).
- Y = x2 *(sin x + x)/2.
- Y = x3 *(sin x + cos x).
- Y = x3 *(sin x + cos x)2.
- Y = x2 *(cos x +x)2.
- Y = x2 *(sin x +x)3.
6.ПРИМЕРЫ ПРОГРАММ
;Программа очистки экрана через видеобуфер
.model small
.486
.stack 100h
.code
begin: mov ax,@data
mov ds,ax
mov ax,0b800h; адрес видеобуфера текстовых режимов
mov es,ax; настройка регистра es на видеобуфер
mov di,00h; настройка регистра di на начало видеобуфера
mov ax,0700h; определение атрибутов фона и символа: черный фон , белый символ
mov cx,2000; счетчик числа выводимых символов- выводим на экран 2000 пробелов
rep stosw
mov ax,4c00h; вызов функции завершения программы
int 21h
end begin
;*****************************************************************
;Программа демонстрации суммирования элементов двух массивов целых чисел
.model small
.486
.stack 100h
.data
M1 db 1,2,3,4,5; первый исходный массив
M2 db 6,7,8,9,10;второй исходный массив
M3 db 5 dup(0); массив результата
.code
begin:mov ax,@data; настройка сегментного регистра ds
mov ds,ax; на сегмент данных
xor di,di;обнуление индексного регистра
mov cx,5;определение счетчика цикла
met: mov al,M1[di];пересылка элемента М1 в регистр
add al,M2[di];суммирование элементов массивов
mov M3[di],al;запись в память результата
inc di; увеличение индекса элемента массива
loop met; возврат на цикл
kon: mov ah,4ch
int 21h
end begin
;*****************************************************************
;Программа перекодировки символов из 16 системы счисления в ASCII или BCD код
.model small
.486
.stack 100h
.data
SH db 0h,1h,2h,3h,4h,5h,6h,7h,8h,9h,0ah,0bh,0ch,0dh,0eh,0fh
ASCII db '0123456789abcdef'
BCD db 0,1,2,3,4,5,6,7,8,9,10h,11h,12h,13h,14h,15h
.code
begin: mov ax,@data
mov ds,ax
mov al,SH[3]; загрузка 3 элемента массива в al
mov dl,al; пересылка его в dl
lea bx,ASCII; настройка адреса массива ASCII кодов на регистр bx
xlat ; перекодировка: в al вместо 16 кода – ASCII -код
mov ch,al; сохранение его в ch
mov al,dl; восстановление 16 кода в al
lea bx,BCD; настройка регистра bx на адрес массива BCD
xlat ; перекодировка: в al вместо 16 кода – BCD -код
mov cl,al; сохранение его в cl
mov ah,4ch; завершение программы
int 21h
end begin
;****************************************************************
;Программа ввода и перевода вещественных границ интервала определения функции
.Model Small
.486
.Stack 200h
.Data
buf db 18; буфер для ввода вещественного числа
db 0; MS DOS возвращает число введенных символов
db 18 dup(0) ; максимальный размер вводимой строки
ten dw 10; константа 10
XL dq 0 ; левая граница интервала
XP dq 0 ; правая граница интервала
mes1 db 13,10,' Введите левую границу' ,13,10,'$'
mes2 db 13,10,' Введите правую границу' ,13,10,'$'
mes3 db 13,10,' Левая граница не может быть равна правой!',13,10,'$'
mes4 db 13,10,' Левая граница не может быть больше правой!',13,10,'$'
c dw 0; переменная для двоичного кода одной цифры числа
;*********************************************************
.Code
GRAN PROC; Процедура ввода и перевода вещественного числа
pusha
vvod:
mov ah, 0Ah; вызов системной функции для ввода строки
lea dx, buf
int 21h
fldz; загрузка в стек сопроцессора 0
mov si, 2; настройка si на первый символ введенной строки в буфере
cmp buf[si],'-'; первый символ - минус?
je M1; да – переход на M1
cmp buf[si],'+'; первый символ – плюс?
jne M2; если нет – то переход на M2
M1: inc si; переход к следующему символу в строке
M2: cmp buf[si],'.'; очередной символ – десятичная точка
je Drob; если да – то переход на обработку дробной части
cmp buf[si],0dh ; иначе – сравнение с кодом клавиши Enter – признак конца строки
je Kon_enter; если да – то переход на метку Kon_enter
cmp buf[si],'0'; иначе – проверка: символ это цифра?
jb vvod; если код символа меньше кода нуля – то повторный ввод
cmp buf[si],'9';
ja vvod; если код символа больше кода девяти – то повторный ввод
mov al,buf[si]; если цифра – то загрузить ее код в al
sub al,'0'; перевод кода символа цифры в двоичный код
xor ah,ah; обнуление регистра
mov c, ax; сохранение двоичного кода цифры
fimul ten; умножение числа в вершине стека на 10
fild c; загрузка кода цифры в вершину стека
fadd; сложение с предыдущей частью числа
inc si
jmp M2; переход к следующему символу в целой части числа
Drob:; обработка дробной части
fldz
xor bx,bx
mov bl,buf[1]; загрузка в bx числа введенных символов
mov si,bx; настройка si на последний символ
inc si
L1:; цикл обработки дробной части
mov al,buf[si]
cmp al,'.'; сравнение с кодом десятичной точки
je Kon_drob; если точка – то завершение обработки дробной части
cmp buf[si],'0'; проверка кода символа на цифры
jb vvod
cmp buf[si],'9'
ja vvod
sub al,'0'; перевод в двоичный код
xor ah,ah
mov c, ax; сохранение двоичного кода цифры
fild c; загрузка кода цифры в вершину стека
fadd; сложение с предыдущей дробной частью числа
fidiv ten; деление на 10
dec si
jmp L1; переход к следующей цифре
Kon_drob: fadd; сложение целой и дробной частей числа
Kon_enter:
cmp buf[2],'-'; определение отрицательного числа
jne Kon; если число положительное – то на метку Kon
fchs; иначе – инвертировать число в вершине стека
Kon:
popa
ret
GRAN endp
;*******************************************
Start:; начало основной программы
mov ax,@data
mov ds,ax
repeat:
finit; инициализация сопроцессора
mov ah,9; вывод первого сообщения
lea dx,mes1
int 21h
Call GRAN
fst XL; сохранение левой границы интервала
mov ah,9; вывод второго сообщения
lea dx,mes2
int 21h
Call GRAN
fst XP; сохранение правой границы интервала
fcom; сравнение левой и правой границ
fstsw ax; передача кодов условия в ЦП
fwait
sahf
je ravno; если границы равны – то ошибка
jb menshe; если правая граница меньше левой – то ошибка
jmp end_progr; если границы введены верно – то выход из программы
ravno:
mov ah,9
lea dx,mes3
int 21h
jmp repeat
menshe:
mov ah,9
lea dx,mes4
int 21h
jmp repeat
end_progr:
mov ah,4ch
int 21h
End Start
СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
- Григорьев В.Г. Микропроцессор i486. Архитектура и программирование (в 4-х книгах). Книга 1. Программная архитектура. - М., ГРАНАЛ, 1993. - с.346, ил.87.
- Григорьев В.Г. Микропроцессор i486. Архитектура и программирование (в 4-х книгах). Книга 2. Аппаратная архитектура. Книга 3. Устройство с плавающей точкой. Книга 4. Справочник по системе команд. - М., ГРАНАЛ, 1993. - с.382, ил.54.
- Юров В. Assembler, -СПб: Питер, 2001, - 624 с.
- Зубков С.В. Assembler для Dos, Windows и UNIX. 2 – е изд., испр. и доп. – М., ДМК, 2000. – 608 с.