Пример готовой курсовой работы по предмету: Программирование
Содержание
Ассемблер в задачах и решениях
Assembler tasks & solutions
ЗАДАНИЕ #01
ИСХОДНЫЕ ДАННЫЕ:
Число A в 3-ой системе счисления, число B — в двоичной.
Максимальная длина числа A — 10 символов.
Цвет символов синий, фон розовый.
ПОЯСНЕНИЯ К ЗАДАЧАМ С #01 ПО #06
СОДЕРЖАНИЕ РАБОТЫ:
1. Преобразовать исходное число A, представленное в одной системе счисления, в равное ему число B, представленное в другой системе счисления.
2. Результат преобразования вывести на экран дисплея с использованием заданных цветов.
3. Также записать числа в файл.
ПОЯСНЕНИЯ:
1. Программа должна состоять из 2-х отдельных модулей, компилируемых раздельно и обьединяемых на этапе линкования. Основной модуль должен выполнять все функции, связанные с вводом/выводом, а вспомогательный — функции, связанные с преобразованием.
2. Как исходное число A, так и результирующее число B должны быть представлены в ASCII коде.
3. Заданное число A является знаковым, причем знак '+' может присутствовать явно или отсутствовать.
4. При вводе данных необходимо предусмотреть проверку корректности вводимых символов и выдаче сообщения об ошибке при вводе некорректного символа.
5. При записи результата в файл необходимо производить его пополнение, то есть записывать в конец файла.
ЗАДАНИЕ #07
Сформировать одномерный массив A{ai} (i=1..30) (i меняется от 1 до 30)
Элементы ai массива A вычисляются по формуле:
ai = |(i*15)/7 — (i/2 + i*3)|
Вывести сформированный массив на экран
ЗАДАНИЕ #08
Сформировать одномерный массив A{ai} (i=1..25),
где ai вычисляется по формуле:
ai = (i + i/3)*2
Вывести массив на экран.
Далее в сформированном массиве сдвинуть элементы,
делящиеся на 3 и
5. влево на 2 разряда
(то есть умножаем на 4).
Вывести обработанный массив на экран.
ЗАДАНИЕ #09
Сформировать и напечатать одномерный массив A{ai} (i=1..30),
где ai вычисляется по формуле:
ai = |(i*15)/7 — (i/2 + i*3)|
Найти и напечатать минимальный элемент в массиве A.
На основе массива A сформировать новый массив B,
куда поместить все чётные элементы.
Напечатать массив B.
ЗАДАНИЕ #10
Сформировать и напечатать одномерный массив A{ai} (i=1..30),
где ai вычисляется по формуле:
ai = i*3 + i/3
В массиве A рассортировать элементы так, чтобы сначала шли нечётные, затем чётные элементы.
Вывести рассортированный массив на экран.
ЗАДАНИЕ #11
1) Получить элементы квадратной матрицы A = {Aij}, где i,j = 1…10
Aij = ((2**i/(i+5/2))*i**2)*(2-(j-5)**2)
2) Найти максимальный из нечетных
3) На основе матрицы A сформировать два новых массива:
в 'ПЕРВЫЙ' поместить все элементы массива A, сумма единиц у которых (в двоичном представлении) больше 5,
во 'ВТОРОЙ' все остальные элементы массива A
ЗАДАНИЕ #12
при нажатии на CTRL+S вывести на экран содержимое корневого каталога
при нажатии на CTRL+X выгрузить программу из памяти
ЗАДАНИЕ #13
при нажатии на CTRL+S вывести на экран характеристики компьютера
при нажатии на CTRL+X выгрузить программу из памяти
характеристики:
установлен ли сопроцессор
установлен ли игровой порт
количество установленных гибких дисководов
количество установленных жёстких дисков (HDD)
количество установленных последовательных портов (COM)
количество установленных параллельных портов (LPT)
восстанавливать текст на экране
ЗАДАНИЕ #14
при нажатии на CTRL+S запросить поверхность, дорожку и сектор
прочитать сектор с флоппи диска
вывести данные сектора на экран
при нажатии на CTRL+X выгрузить программу из памяти
ЗАДАНИЕ #15
при нажатии на CTRL+S начать подсчёт числа обращений к флоппи-диску
при нажатии на CTRL+E закончить подсчёт и вывести количество обращений на экран
при нажатии на CTRL+Q выгрузить программу из памяти
для выгрузки программя из памяти предусмотреть параметр /U при старте программы
ЗАДАНИЕ #16
перехватить прерывание INT 21H
обрабатывать функцию 4Fh
("FINDNEXT"
- НАЙТИ СЛЕДУЮЩИЙ ФАЙЛ, СООТВЕТСТВУЮЩИЙ ЗАДАННОЙ СПЕЦИФИКАЦИИ)
для скрытия каталога GAMES от просмотра в файловых менеджерах
(типа Norton Commander, Volcov Commander, Dos Navigator)
ЗАДАНИЕ #17
перехватить прерывание INT 08H
в текстовом режиме каждые 5 секунд подсвечивать верхнюю строчку разными цветами
проверка на повторный запуск программы
выгрузка программы из памяти при указании параметра /U
ЗАДАНИЕ #18
в файле file.dat записано 5-ти значное число в символьном виде в десятичной системе счисления
необходимо прочитать это число из файла, преобразовать его в 16-ый вид
результат работы программы показать на экране
программа должна состоять из 3-х модулей
главный модуль MODUL1.ASM, использует функции из модулей 2 и 3
передача параметров в процедуры должна осуществляться через стек
модуль MODUL2.ASM содержит процедуру преобразования из 10-ой системы счисления в 16-ую
модуль MODUL3.ASM содержит функции чтения данных из файла, очистку экрана и печать результатов
после компиляции модуль 3 включить в библиотеку, которую использовать при сборке программы
ЗАДАНИЕ #19
необходимо ввести 16-ое число со знаком с клавиатуры с проверкой на вводимые символы
преобразовать введённое число, представленное в символьном виде, в число (цифровой вид)
преобразовать число в строку в символьном виде 16-ая система счисления
записать строку в файл
результаты работы программы показывать на экране
программа должна состоять из 3-х модулей
главный модуль MODUL1.ASM, использует функции из модулей 2 и 3
передача параметров в процедуры должна осуществляться через стек
результат работы процедуры возвращают в регистре AX
модуль MODUL2.ASM содержит 2 процедуры преобразования: из строки в число и из числа в строку
модуль MODUL3.ASM содержит функции ввода строки и записи строки в файл
использовать 2 способа сборки после компиляции: без использования библиотеки и с использованием библиотеки
в библиотеку включать модуль 3
ЗАДАНИЕ #20
есть массив из 20-ти элементов
каждый элемент массива — это 18-ти разрядное число со знаком
в программе необходимо реализовать 2 макроса:
один кладёт элемент в массив по указанному индексу
второй достаёт элемент массива по индексу
заполнить массив числами
вывести массив на экран
отсортировать элементы в массиве во возрастанию
вывести отсортированный массив на экран
ЗАДАНИЕ #21
перехватить прерывание INT 08h
эмулировать параллельное выполнение задач
в текстовом режиме:
первая процедура окрашивает фон верхней (первой) строки то в синий, то в чёрный цвет
вторая процедура окрашивает фон второй строки то в красный, то в чёрный цвет
главная программа проверяет клавиатуру
и при нажатии клавиши ESCAPE завершает работу
дополнительно реализовать связку Pascal + Assembler:
на Assembler производить переключение между задачами
на языке Pascal реализовать основные действия по инициализации
и процедуры, между которыми происходит переключение
ЗАДАНИЕ #22
в текстовом режиме нарисовать прямоугольные окна разного цвета с бордюром
окна должны "отбрасывать" тень
программа должна состоять из 2-х модулей
главный модуль MODUL1.ASM, использует функцию рисования окна из модуля 2
передача параметров в процедуру должна осуществляться через стек
параметры: координаты окна, атрибуты окна (цвет фона и цвет символов), атрибуты отбрасываемой тени
сделать макрос для расположения параметров в стек перед вызовом процедуры рисования окна
ЗАДАНИЕ #23
перехватить прерывание INT 21H
в цифровом виде в выходной файл записывать вызываемую функцию
и значения регистров до и после вызова прерывания INT 21H
разработать вспомогательное ПО для конвертации цифрового вида
в удобочитаемый символьный вид
ЗАДАНИЕ #24
написать 2 программы, записывающие снимок экрана в файл
активизация программы должна происходить при нажатии клавиши Print Screen
первая работает в текстовом режиме
8. на 25 символов на 16 цветов
при активизации выделить область мышкой
вторая делает полный снимок в графическом режиме
32. на 200 точек на 256 цветов
в графический снимок записать также цветовую палитру
ЗАДАНИЕ #25
перехватить прерывание от таймера INT 08H
выводить разные символы в левый верхний угол экрана
ЗАДАНИЕ #26
в графическом режиме
32. на 200 точек на 256 цветов
обрабатывать сообщения от мышки (прерывание INT 33H)
при нажатии левой кнопки мыши рисовать белую точку
ЗАДАНИЕ #27
реализовать передачу / приём байта через последовательный COM-порт с корректирующими кодами Хэмминга
программа должна состоять из 2 модулей
первый — основной модуль (настройка порта, ввод байта, передача, приём, отображение)
второй содержит процедуры кодирования / декодирования байта по Хэммингу
ЗАДАНИЕ #28
задачи по курсу "компьютерная графика"
Видеоадаптер EGA (режим 10h — 640х 350x 16)
режим записи 0
1
в байт с адресом
10. относительно начала видеопамяти
записан код 0Ah (1010b), а в соответствующие видеоплоскости код 1011b
Определить, что отобразится на экране в этом случае
2
вывод на экран точки с координатами x = 353, y = 151, цветом 1100B
для вывода точки используется процедура
значения цвета и координат задаются непосредственно в тексте программы
3
программа построения горизонтальной линии произвольного размера
от минимального (в один пиксель) до максимального (640 пикселей)
заданы X, Y, длина линии D и цвет Color
используется процедура вывода точки
Стремиться к максимальной скорости построения линии
4
программа построения горизонтальной линии произвольного размера
от минимального (в один пиксель) до максимального (640 пикселей)
заданы X1, X2, Y и цвет
процедура вывода точки не используется, но вывод попиксельно
Стремиться к максимальной скорости построения линии
5
программа построения горизонтальной линии произвольного размера
от минимального (в один пиксель) до максимального (640 пикселей)
заданы X1, X2, Y и цвет
процедура вывода точки не используется, вывод побайтно
Стремиться к максимальной скорости построения линии
6
программа построения линии, используя алгоритм Брезенхема
заданы X1, X2, Y1, Y2 и Color, вывод побайтно
версия 1
7
программа построения линии, используя алгоритм Брезенхема
заданы X1, X2, Y1, Y2 и Color, вывод побайтно
версия 2
8
программа построения треугольника и его перемещение влево и вправо
используется процедура вывода горизонтальной линии
ЗАДАНИЕ #29
задачи по теме "защищённый режим"
1
переход в защищённый режим и обратно
2
использование 32-битовых операндов и управляющего регистра CR0
3
дескрипторы и обрабтчики исключений (используя макросы)
4
дескрипторы и обрабтчики исключений
5
обработка аппаратных прерываний в защищенном режиме
ЗАДАНИЕ #30
написать программу идентификации жёстких дисков (HDD)
для каждого HDD выводить на экране следующую информацию:
главный или подчинённый (master/slave)
первичный, вторичный, … (primary, secondary, tertiary, quaternary)
номер модели
серийный номер
число логических цилиндров
число логических головок (дорожек)
число логических секторов на дорожке
ёмкость в секторах
общее число секторов в режиме LBA (линейная адресация секторов)
ЗАДАНИЕ #31
написать программу перехвата прерывания 28H
программа должна выполнять чтение данных из файла
отображать на экране процесс чтения данных
в момент срабатывания прерывания
28. вывести сообщение на экран
и ждать нажатия пользователем любой клавиши
ЗАДАНИЕ #32
написать резидентную программу
при нажатии на CTRL+S начать подсчёт количества нажатий
на ЦИФРОВЫЕ клавиши основной клавиатуры
при нажатии на CTRL+D закончить подсчёт и вывести количество на экран
при нажатии на CTRL+F выгрузить программу из памяти
реализовать программу на языке ассемблера и СИ
Выдержка из текста
Ассемблер в задачах и решениях
Assembler tasks & solutions
ЗАДАНИЕ #01
ИСХОДНЫЕ ДАННЫЕ:
Число A в 3-ой системе счисления, число B — в двоичной.
Максимальная длина числа A — 10 символов.
Цвет символов синий, фон розовый.
ПОЯСНЕНИЯ К ЗАДАЧАМ С #01 ПО #06
СОДЕРЖАНИЕ РАБОТЫ:
1. Преобразовать исходное число A, представленное в одной системе счисления, в равное ему число B, представленное в другой системе счисления.
2. Результат преобразования вывести на экран дисплея с использованием заданных цветов.
3. Также записать числа в файл.
ПОЯСНЕНИЯ:
1. Программа должна состоять из 2-х отдельных модулей, компилируемых раздельно и обьединяемых на этапе линкования. Основной модуль должен выполнять все функции, связанные с вводом/выводом, а вспомогательный — функции, связанные с преобразованием.
2. Как исходное число A, так и результирующее число B должны быть представлены в ASCII коде.
3. Заданное число A является знаковым, причем знак '+' может присутствовать явно или отсутствовать.
4. При вводе данных необходимо предусмотреть проверку корректности вводимых символов и выдаче сообщения об ошибке при вводе некорректного символа.
5. При записи результата в файл необходимо производить его пополнение, то есть записывать в конец файла.
ЗАДАНИЕ #07
Сформировать одномерный массив A{ai} (i=1..30) (i меняется от 1 до 30)
Элементы ai массива A вычисляются по формуле:
ai = |(i*15)/7 — (i/2 + i*3)|
Вывести сформированный массив на экран
ЗАДАНИЕ #08
Сформировать одномерный массив A{ai} (i=1..25),
где ai вычисляется по формуле:
ai = (i + i/3)*2
Вывести массив на экран.
Далее в сформированном массиве сдвинуть элементы,
делящиеся на 3 и
5. влево на 2 разряда
(то есть умножаем на 4).
Вывести обработанный массив на экран.
ЗАДАНИЕ #09
Сформировать и напечатать одномерный массив A{ai} (i=1..30),
где ai вычисляется по формуле:
ai = |(i*15)/7 — (i/2 + i*3)|
Найти и напечатать минимальный элемент в массиве A.
На основе массива A сформировать новый массив B,
куда поместить все чётные элементы.
Напечатать массив B.
ЗАДАНИЕ #10
Сформировать и напечатать одномерный массив A{ai} (i=1..30),
где ai вычисляется по формуле:
ai = i*3 + i/3
В массиве A рассортировать элементы так, чтобы сначала шли нечётные, затем чётные элементы.
Вывести рассортированный массив на экран.
ЗАДАНИЕ #11
1) Получить элементы квадратной матрицы A = {Aij}, где i,j = 1…10
Aij = ((2**i/(i+5/2))*i**2)*(2-(j-5)**2)
2) Найти максимальный из нечетных
3) На основе матрицы A сформировать два новых массива:
в 'ПЕРВЫЙ' поместить все элементы массива A, сумма единиц у которых (в двоичном представлении) больше 5,
во 'ВТОРОЙ' все остальные элементы массива A
ЗАДАНИЕ #12
при нажатии на CTRL+S вывести на экран содержимое корневого каталога
при нажатии на CTRL+X выгрузить программу из памяти
ЗАДАНИЕ #13
при нажатии на CTRL+S вывести на экран характеристики компьютера
при нажатии на CTRL+X выгрузить программу из памяти
характеристики:
установлен ли сопроцессор
установлен ли игровой порт
количество установленных гибких дисководов
количество установленных жёстких дисков (HDD)
количество установленных последовательных портов (COM)
количество установленных параллельных портов (LPT)
восстанавливать текст на экране
ЗАДАНИЕ #14
при нажатии на CTRL+S запросить поверхность, дорожку и сектор
прочитать сектор с флоппи диска
вывести данные сектора на экран
при нажатии на CTRL+X выгрузить программу из памяти
ЗАДАНИЕ #15
при нажатии на CTRL+S начать подсчёт числа обращений к флоппи-диску
при нажатии на CTRL+E закончить подсчёт и вывести количество обращений на экран
при нажатии на CTRL+Q выгрузить программу из памяти
для выгрузки программя из памяти предусмотреть параметр /U при старте программы
ЗАДАНИЕ #16
перехватить прерывание INT 21H
обрабатывать функцию 4Fh
("FINDNEXT"
- НАЙТИ СЛЕДУЮЩИЙ ФАЙЛ, СООТВЕТСТВУЮЩИЙ ЗАДАННОЙ СПЕЦИФИКАЦИИ)
для скрытия каталога GAMES от просмотра в файловых менеджерах
(типа Norton Commander, Volcov Commander, Dos Navigator)
ЗАДАНИЕ #17
перехватить прерывание INT 08H
в текстовом режиме каждые 5 секунд подсвечивать верхнюю строчку разными цветами
проверка на повторный запуск программы
выгрузка программы из памяти при указании параметра /U
ЗАДАНИЕ #18
в файле file.dat записано 5-ти значное число в символьном виде в десятичной системе счисления
необходимо прочитать это число из файла, преобразовать его в 16-ый вид
результат работы программы показать на экране
программа должна состоять из 3-х модулей
главный модуль MODUL1.ASM, использует функции из модулей 2 и 3
передача параметров в процедуры должна осуществляться через стек
модуль MODUL2.ASM содержит процедуру преобразования из 10-ой системы счисления в 16-ую
модуль MODUL3.ASM содержит функции чтения данных из файла, очистку экрана и печать результатов
после компиляции модуль 3 включить в библиотеку, которую использовать при сборке программы
ЗАДАНИЕ #19
необходимо ввести 16-ое число со знаком с клавиатуры с проверкой на вводимые символы
преобразовать введённое число, представленное в символьном виде, в число (цифровой вид)
преобразовать число в строку в символьном виде 16-ая система счисления
записать строку в файл
результаты работы программы показывать на экране
программа должна состоять из 3-х модулей
главный модуль MODUL1.ASM, использует функции из модулей 2 и 3
передача параметров в процедуры должна осуществляться через стек
результат работы процедуры возвращают в регистре AX
модуль MODUL2.ASM содержит 2 процедуры преобразования: из строки в число и из числа в строку
модуль MODUL3.ASM содержит функции ввода строки и записи строки в файл
использовать 2 способа сборки после компиляции: без использования библиотеки и с использованием библиотеки
в библиотеку включать модуль 3
ЗАДАНИЕ #20
есть массив из 20-ти элементов
каждый элемент массива — это 18-ти разрядное число со знаком
в программе необходимо реализовать 2 макроса:
один кладёт элемент в массив по указанному индексу
второй достаёт элемент массива по индексу
заполнить массив числами
вывести массив на экран
отсортировать элементы в массиве во возрастанию
вывести отсортированный массив на экран
ЗАДАНИЕ #21
перехватить прерывание INT 08h
эмулировать параллельное выполнение задач
в текстовом режиме:
первая процедура окрашивает фон верхней (первой) строки то в синий, то в чёрный цвет
вторая процедура окрашивает фон второй строки то в красный, то в чёрный цвет
главная программа проверяет клавиатуру
и при нажатии клавиши ESCAPE завершает работу
дополнительно реализовать связку Pascal + Assembler:
на Assembler производить переключение между задачами
на языке Pascal реализовать основные действия по инициализации
и процедуры, между которыми происходит переключение
ЗАДАНИЕ #22
в текстовом режиме нарисовать прямоугольные окна разного цвета с бордюром
окна должны "отбрасывать" тень
программа должна состоять из 2-х модулей
главный модуль MODUL1.ASM, использует функцию рисования окна из модуля 2
передача параметров в процедуру должна осуществляться через стек
параметры: координаты окна, атрибуты окна (цвет фона и цвет символов), атрибуты отбрасываемой тени
сделать макрос для расположения параметров в стек перед вызовом процедуры рисования окна
ЗАДАНИЕ #23
перехватить прерывание INT 21H
в цифровом виде в выходной файл записывать вызываемую функцию
и значения регистров до и после вызова прерывания INT 21H
разработать вспомогательное ПО для конвертации цифрового вида
в удобочитаемый символьный вид
ЗАДАНИЕ #24
написать 2 программы, записывающие снимок экрана в файл
активизация программы должна происходить при нажатии клавиши Print Screen
первая работает в текстовом режиме
8. на 25 символов на 16 цветов
при активизации выделить область мышкой
вторая делает полный снимок в графическом режиме
32. на 200 точек на 256 цветов
в графический снимок записать также цветовую палитру
ЗАДАНИЕ #25
перехватить прерывание от таймера INT 08H
выводить разные символы в левый верхний угол экрана
ЗАДАНИЕ #26
в графическом режиме
32. на 200 точек на 256 цветов
обрабатывать сообщения от мышки (прерывание INT 33H)
при нажатии левой кнопки мыши рисовать белую точку
ЗАДАНИЕ #27
реализовать передачу / приём байта через последовательный COM-порт с корректирующими кодами Хэмминга
программа должна состоять из 2 модулей
первый — основной модуль (настройка порта, ввод байта, передача, приём, отображение)
второй содержит процедуры кодирования / декодирования байта по Хэммингу
ЗАДАНИЕ #28
задачи по курсу "компьютерная графика"
Видеоадаптер EGA (режим 10h — 640х 350x 16)
режим записи 0
1
в байт с адресом
10. относительно начала видеопамяти
записан код 0Ah (1010b), а в соответствующие видеоплоскости код 1011b
Определить, что отобразится на экране в этом случае
2
вывод на экран точки с координатами x = 353, y = 151, цветом 1100B
для вывода точки используется процедура
значения цвета и координат задаются непосредственно в тексте программы
3
программа построения горизонтальной линии произвольного размера
от минимального (в один пиксель) до максимального (640 пикселей)
заданы X, Y, длина линии D и цвет Color
используется процедура вывода точки
Стремиться к максимальной скорости построения линии
4
программа построения горизонтальной линии произвольного размера
от минимального (в один пиксель) до максимального (640 пикселей)
заданы X1, X2, Y и цвет
процедура вывода точки не используется, но вывод попиксельно
Стремиться к максимальной скорости построения линии
5
программа построения горизонтальной линии произвольного размера
от минимального (в один пиксель) до максимального (640 пикселей)
заданы X1, X2, Y и цвет
процедура вывода точки не используется, вывод побайтно
Стремиться к максимальной скорости построения линии
6
программа построения линии, используя алгоритм Брезенхема
заданы X1, X2, Y1, Y2 и Color, вывод побайтно
версия 1
7
программа построения линии, используя алгоритм Брезенхема
заданы X1, X2, Y1, Y2 и Color, вывод побайтно
версия 2
8
программа построения треугольника и его перемещение влево и вправо
используется процедура вывода горизонтальной линии
ЗАДАНИЕ #29
задачи по теме "защищённый режим"
1
переход в защищённый режим и обратно
2
использование 32-битовых операндов и управляющего регистра CR0
3
дескрипторы и обрабтчики исключений (используя макросы)
4
дескрипторы и обрабтчики исключений
5
обработка аппаратных прерываний в защищенном режиме
ЗАДАНИЕ #30
написать программу идентификации жёстких дисков (HDD)
для каждого HDD выводить на экране следующую информацию:
главный или подчинённый (master/slave)
первичный, вторичный, … (primary, secondary, tertiary, quaternary)
номер модели
серийный номер
число логических цилиндров
число логических головок (дорожек)
число логических секторов на дорожке
ёмкость в секторах
общее число секторов в режиме LBA (линейная адресация секторов)
ЗАДАНИЕ #31
написать программу перехвата прерывания 28H
программа должна выполнять чтение данных из файла
отображать на экране процесс чтения данных
в момент срабатывания прерывания
28. вывести сообщение на экран
и ждать нажатия пользователем любой клавиши
ЗАДАНИЕ #32
написать резидентную программу
при нажатии на CTRL+S начать подсчёт количества нажатий
на ЦИФРОВЫЕ клавиши основной клавиатуры
при нажатии на CTRL+D закончить подсчёт и вывести количество на экран
при нажатии на CTRL+F выгрузить программу из памяти
реализовать программу на языке ассемблера и СИ
Список использованной литературы
Ассемблер в задачах и решениях
Assembler tasks & solutions
ЗАДАНИЕ #01
ИСХОДНЫЕ ДАННЫЕ:
Число A в 3-ой системе счисления, число B — в двоичной.
Максимальная длина числа A — 10 символов.
Цвет символов синий, фон розовый.
ПОЯСНЕНИЯ К ЗАДАЧАМ С #01 ПО #06
СОДЕРЖАНИЕ РАБОТЫ:
1. Преобразовать исходное число A, представленное в одной системе счисления, в равное ему число B, представленное в другой системе счисления.
2. Результат преобразования вывести на экран дисплея с использованием заданных цветов.
3. Также записать числа в файл.
ПОЯСНЕНИЯ:
1. Программа должна состоять из 2-х отдельных модулей, компилируемых раздельно и обьединяемых на этапе линкования. Основной модуль должен выполнять все функции, связанные с вводом/выводом, а вспомогательный — функции, связанные с преобразованием.
2. Как исходное число A, так и результирующее число B должны быть представлены в ASCII коде.
3. Заданное число A является знаковым, причем знак '+' может присутствовать явно или отсутствовать.
4. При вводе данных необходимо предусмотреть проверку корректности вводимых символов и выдаче сообщения об ошибке при вводе некорректного символа.
5. При записи результата в файл необходимо производить его пополнение, то есть записывать в конец файла.
ЗАДАНИЕ #07
Сформировать одномерный массив A{ai} (i=1..30) (i меняется от 1 до 30)
Элементы ai массива A вычисляются по формуле:
ai = |(i*15)/7 — (i/2 + i*3)|
Вывести сформированный массив на экран
ЗАДАНИЕ #08
Сформировать одномерный массив A{ai} (i=1..25),
где ai вычисляется по формуле:
ai = (i + i/3)*2
Вывести массив на экран.
Далее в сформированном массиве сдвинуть элементы,
делящиеся на 3 и
5. влево на 2 разряда
(то есть умножаем на 4).
Вывести обработанный массив на экран.
ЗАДАНИЕ #09
Сформировать и напечатать одномерный массив A{ai} (i=1..30),
где ai вычисляется по формуле:
ai = |(i*15)/7 — (i/2 + i*3)|
Найти и напечатать минимальный элемент в массиве A.
На основе массива A сформировать новый массив B,
куда поместить все чётные элементы.
Напечатать массив B.
ЗАДАНИЕ #10
Сформировать и напечатать одномерный массив A{ai} (i=1..30),
где ai вычисляется по формуле:
ai = i*3 + i/3
В массиве A рассортировать элементы так, чтобы сначала шли нечётные, затем чётные элементы.
Вывести рассортированный массив на экран.
ЗАДАНИЕ #11
1) Получить элементы квадратной матрицы A = {Aij}, где i,j = 1…10
Aij = ((2**i/(i+5/2))*i**2)*(2-(j-5)**2)
2) Найти максимальный из нечетных
3) На основе матрицы A сформировать два новых массива:
в 'ПЕРВЫЙ' поместить все элементы массива A, сумма единиц у которых (в двоичном представлении) больше 5,
во 'ВТОРОЙ' все остальные элементы массива A
ЗАДАНИЕ #12
при нажатии на CTRL+S вывести на экран содержимое корневого каталога
при нажатии на CTRL+X выгрузить программу из памяти
ЗАДАНИЕ #13
при нажатии на CTRL+S вывести на экран характеристики компьютера
при нажатии на CTRL+X выгрузить программу из памяти
характеристики:
установлен ли сопроцессор
установлен ли игровой порт
количество установленных гибких дисководов
количество установленных жёстких дисков (HDD)
количество установленных последовательных портов (COM)
количество установленных параллельных портов (LPT)
восстанавливать текст на экране
ЗАДАНИЕ #14
при нажатии на CTRL+S запросить поверхность, дорожку и сектор
прочитать сектор с флоппи диска
вывести данные сектора на экран
при нажатии на CTRL+X выгрузить программу из памяти
ЗАДАНИЕ #15
при нажатии на CTRL+S начать подсчёт числа обращений к флоппи-диску
при нажатии на CTRL+E закончить подсчёт и вывести количество обращений на экран
при нажатии на CTRL+Q выгрузить программу из памяти
для выгрузки программя из памяти предусмотреть параметр /U при старте программы
ЗАДАНИЕ #16
перехватить прерывание INT 21H
обрабатывать функцию 4Fh
("FINDNEXT"
- НАЙТИ СЛЕДУЮЩИЙ ФАЙЛ, СООТВЕТСТВУЮЩИЙ ЗАДАННОЙ СПЕЦИФИКАЦИИ)
для скрытия каталога GAMES от просмотра в файловых менеджерах
(типа Norton Commander, Volcov Commander, Dos Navigator)
ЗАДАНИЕ #17
перехватить прерывание INT 08H
в текстовом режиме каждые 5 секунд подсвечивать верхнюю строчку разными цветами
проверка на повторный запуск программы
выгрузка программы из памяти при указании параметра /U
ЗАДАНИЕ #18
в файле file.dat записано 5-ти значное число в символьном виде в десятичной системе счисления
необходимо прочитать это число из файла, преобразовать его в 16-ый вид
результат работы программы показать на экране
программа должна состоять из 3-х модулей
главный модуль MODUL1.ASM, использует функции из модулей 2 и 3
передача параметров в процедуры должна осуществляться через стек
модуль MODUL2.ASM содержит процедуру преобразования из 10-ой системы счисления в 16-ую
модуль MODUL3.ASM содержит функции чтения данных из файла, очистку экрана и печать результатов
после компиляции модуль 3 включить в библиотеку, которую использовать при сборке программы
ЗАДАНИЕ #19
необходимо ввести 16-ое число со знаком с клавиатуры с проверкой на вводимые символы
преобразовать введённое число, представленное в символьном виде, в число (цифровой вид)
преобразовать число в строку в символьном виде 16-ая система счисления
записать строку в файл
результаты работы программы показывать на экране
программа должна состоять из 3-х модулей
главный модуль MODUL1.ASM, использует функции из модулей 2 и 3
передача параметров в процедуры должна осуществляться через стек
результат работы процедуры возвращают в регистре AX
модуль MODUL2.ASM содержит 2 процедуры преобразования: из строки в число и из числа в строку
модуль MODUL3.ASM содержит функции ввода строки и записи строки в файл
использовать 2 способа сборки после компиляции: без использования библиотеки и с использованием библиотеки
в библиотеку включать модуль 3
ЗАДАНИЕ #20
есть массив из 20-ти элементов
каждый элемент массива — это 18-ти разрядное число со знаком
в программе необходимо реализовать 2 макроса:
один кладёт элемент в массив по указанному индексу
второй достаёт элемент массива по индексу
заполнить массив числами
вывести массив на экран
отсортировать элементы в массиве во возрастанию
вывести отсортированный массив на экран
ЗАДАНИЕ #21
перехватить прерывание INT 08h
эмулировать параллельное выполнение задач
в текстовом режиме:
первая процедура окрашивает фон верхней (первой) строки то в синий, то в чёрный цвет
вторая процедура окрашивает фон второй строки то в красный, то в чёрный цвет
главная программа проверяет клавиатуру
и при нажатии клавиши ESCAPE завершает работу
дополнительно реализовать связку Pascal + Assembler:
на Assembler производить переключение между задачами
на языке Pascal реализовать основные действия по инициализации
и процедуры, между которыми происходит переключение
ЗАДАНИЕ #22
в текстовом режиме нарисовать прямоугольные окна разного цвета с бордюром
окна должны "отбрасывать" тень
программа должна состоять из 2-х модулей
главный модуль MODUL1.ASM, использует функцию рисования окна из модуля 2
передача параметров в процедуру должна осуществляться через стек
параметры: координаты окна, атрибуты окна (цвет фона и цвет символов), атрибуты отбрасываемой тени
сделать макрос для расположения параметров в стек перед вызовом процедуры рисования окна
ЗАДАНИЕ #23
перехватить прерывание INT 21H
в цифровом виде в выходной файл записывать вызываемую функцию
и значения регистров до и после вызова прерывания INT 21H
разработать вспомогательное ПО для конвертации цифрового вида
в удобочитаемый символьный вид
ЗАДАНИЕ #24
написать 2 программы, записывающие снимок экрана в файл
активизация программы должна происходить при нажатии клавиши Print Screen
первая работает в текстовом режиме
8. на 25 символов на 16 цветов
при активизации выделить область мышкой
вторая делает полный снимок в графическом режиме
32. на 200 точек на 256 цветов
в графический снимок записать также цветовую палитру
ЗАДАНИЕ #25
перехватить прерывание от таймера INT 08H
выводить разные символы в левый верхний угол экрана
ЗАДАНИЕ #26
в графическом режиме
32. на 200 точек на 256 цветов
обрабатывать сообщения от мышки (прерывание INT 33H)
при нажатии левой кнопки мыши рисовать белую точку
ЗАДАНИЕ #27
реализовать передачу / приём байта через последовательный COM-порт с корректирующими кодами Хэмминга
программа должна состоять из 2 модулей
первый — основной модуль (настройка порта, ввод байта, передача, приём, отображение)
второй содержит процедуры кодирования / декодирования байта по Хэммингу
ЗАДАНИЕ #28
задачи по курсу "компьютерная графика"
Видеоадаптер EGA (режим 10h — 640х 350x 16)
режим записи 0
1
в байт с адресом
10. относительно начала видеопамяти
записан код 0Ah (1010b), а в соответствующие видеоплоскости код 1011b
Определить, что отобразится на экране в этом случае
2
вывод на экран точки с координатами x = 353, y = 151, цветом 1100B
для вывода точки используется процедура
значения цвета и координат задаются непосредственно в тексте программы
3
программа построения горизонтальной линии произвольного размера
от минимального (в один пиксель) до максимального (640 пикселей)
заданы X, Y, длина линии D и цвет Color
используется процедура вывода точки
Стремиться к максимальной скорости построения линии
4
программа построения горизонтальной линии произвольного размера
от минимального (в один пиксель) до максимального (640 пикселей)
заданы X1, X2, Y и цвет
процедура вывода точки не используется, но вывод попиксельно
Стремиться к максимальной скорости построения линии
5
программа построения горизонтальной линии произвольного размера
от минимального (в один пиксель) до максимального (640 пикселей)
заданы X1, X2, Y и цвет
процедура вывода точки не используется, вывод побайтно
Стремиться к максимальной скорости построения линии
6
программа построения линии, используя алгоритм Брезенхема
заданы X1, X2, Y1, Y2 и Color, вывод побайтно
версия 1
7
программа построения линии, используя алгоритм Брезенхема
заданы X1, X2, Y1, Y2 и Color, вывод побайтно
версия 2
8
программа построения треугольника и его перемещение влево и вправо
используется процедура вывода горизонтальной линии
ЗАДАНИЕ #29
задачи по теме "защищённый режим"
1
переход в защищённый режим и обратно
2
использование 32-битовых операндов и управляющего регистра CR0
3
дескрипторы и обрабтчики исключений (используя макросы)
4
дескрипторы и обрабтчики исключений
5
обработка аппаратных прерываний в защищенном режиме
ЗАДАНИЕ #30
написать программу идентификации жёстких дисков (HDD)
для каждого HDD выводить на экране следующую информацию:
главный или подчинённый (master/slave)
первичный, вторичный, … (primary, secondary, tertiary, quaternary)
номер модели
серийный номер
число логических цилиндров
число логических головок (дорожек)
число логических секторов на дорожке
ёмкость в секторах
общее число секторов в режиме LBA (линейная адресация секторов)
ЗАДАНИЕ #31
написать программу перехвата прерывания 28H
программа должна выполнять чтение данных из файла
отображать на экране процесс чтения данных
в момент срабатывания прерывания
28. вывести сообщение на экран
и ждать нажатия пользователем любой клавиши
ЗАДАНИЕ #32
написать резидентную программу
при нажатии на CTRL+S начать подсчёт количества нажатий
на ЦИФРОВЫЕ клавиши основной клавиатуры
при нажатии на CTRL+D закончить подсчёт и вывести количество на экран
при нажатии на CTRL+F выгрузить программу из памяти
реализовать программу на языке ассемблера и СИ