При выполнении лабораторных работ для очистки экрана можно воспользоваться свойством функции 00h. При вызове данной функции происходит изменение видеорежима, которое сопровождается очисткой экрана. При запуске программы всегда включен видеорежим 03h. При повторной смене видеорежима (даже если в качестве нового видеорежима выбран текущий) происходит очистка экрана.
При использовании видеостраниц существует возможность подготовки изображения на видеостранице не доступной пользователю, а затем выбор этой видеостраницы в качестве текущей. Данное действие можно ассоциировать с работой окон в языках высокого уровня. При смене текущей видеостраницы содержание всех видеостраниц сохраняется.
Вывод строки на экран пользователя осуществляется посимвольно. Для этого требуется указывать адрес ячейки памяти для каждого символа строки. Далее приведен пример вывода строки на экран.
masm
model small
.data
str db “Это строка $”
row db (?)
col db (?)
.code
prog:
; Очистка экрана текущей видеостраницы
mov ah, 00h
mov al, 03h
int 10h
mov ax, @data
mov ds, ax
; Установка адресного регистра на начало строкаи
mov di, offset string
mov row, 10
mov col, 10
m1:
; Позиционирование курсора
mov ah, 02h
mov dh, row
mov dl, col
int 10h
; Считывание в регистр al одного символа из строки и проверка на конец строки. Если встречается символ $, то считает – конец строки и выход из программы.
mov al, [di]
cmp al, “$”
jz m2
; Вывод на экран на бордовом фоне синим цветом (определяется содержимым bl) одного символа (определяется cx), код которого помещается в регистр al. Выбрана нулевая видеостраница.
mov ah, 09h
mov bh, 00h
mov bl, 59h
mov al, [di]
mov cx, 01h
int 10h
; переход к следующему символу (увеличение di), изменение горизонтальной позиции курсора. Происходит безусловный переход на начало цикла. Цикл будет окончен, если встретиться знак «$».
inc di
inc col
jmp m1
m2:
mov ax, 4c00h
int 21h
end prog
Задание на лабораторную работу:
Разработать программу на языке Assembler выполняющую вывод на экран в соответствии с вариантом заданием. Переменные, заданные в каждом варианте должны быть введены пользователем в процессе выполнения программы. Все программы должны быть построены по модульному типу. Обязательно должна присутствовать, как минимум, одна подпрограмма, либо микрокоманда.
При выполнении лабораторной работы можно использовать библиотечные файлы, полученные в предыдущих лабораторных работах.
Лабораторные работы выполняются в соответствии с вариантом задания, номер которого требуется получить у преподавателя.
Вариант 1.
Написать программу для вывода строки текста с заданными атрибутами сверху вниз с заданной позиции на экране.
str – строка для вывода
row – номер строки
col – номер столбца
attr – байт атрибутов
Вариант 2.
Написать программу для считывания с экрана строки текста, начиная с заданной позиции.
str – строка, куда нужно поместить считанные данные
row – номер строки
col – номер столбца
len – количество считываемых символов
Вариант 3.
Написать программу, которая меняет на экране атрибуты строки символов в заданном месте экрана.
row – номер строки
col – номер столбца
len – длина строки
attr – атрибуты строки
Вариант 4.
Написать программу, которая выводит на экран в заданном месте строку символов с разными атрибутами.
str – строка символов для вывода
attr – массив атрибутов символов
row – номер строки
col – номер столбца
Вариант 5.
Написать программу замены атрибутов всех букв «r» текущей видеостраницы на заданные атрибуты. При выполнении данного варианта требуется организовать ввод атрибутов символа пользователем в процессе выполнения программы.
attr – атрибуты символа
Вариант 6.
Написать программу для считывания с экрана вертикального столбца, начиная с заданной позиции.
str –строка, куда нужно поместить считанные данные
row – номер строки
col – номер столбца
len – количество считываемых символов
Вариант 7.
Написать программу замены атрибутов каждого третьего символа в строке, выведенной на экран на новые.
str – строка для вывода
attr – новые атрибуты символа
Вариант 8.
Написать программу замены всех символов «a» в экранной строке, на символ «b» с заданными атрибутами. При выполнении данного варианта требуется организовать ввод атрибутов символа пользователем в процессе выполнения программы.
attr – атрибуты символа
Вариант 9.
Написать программу вывода на экран 4-х граней квадрата, используя заданный символ с заданными атрибутами.
symbol – ASCII-код символа
attr – атрибуты символа
side – количество символов, составляющих грань квадрата
Вариант 10.
Написать программу, подсчитывающую количество букв «o» между заданными позициями курсора, при условии, что номер строки остается неизменным.
row – номер строки
col_1 – номер первого столбца
col_2 – номер второго столбца
Вариант 11.
Написать программу вывода строки с заданной позиции на экране по N символов в экранной строке.
row – номер строки
col – номер столбца
N – количество символов в одной экранной строке
Вариант 12.
Написать программу подготовки надписи в заданной позиции курсора, в любой видеостранице отличной от текущей, а затем выполнить переключение дисплея на выбранную видеостраницу.
row – номер строки
col – номер столбца
Nvideo – номер заданной видеостраницы
Вариант 13.
Написать программу очистки экрана и вывода в центре экрана заданной строки с заданными атрибутами.
str – строка для вывода
attr – атрибуты символов строки
Вариант 14.
Написать программу копирования 5 символов из заданной позиции текущей видеостраницы в заданную видеостраницу.
row – номер строки
col – номер столбца
Nvideo – номер заданной видеостраницы
Вариант 15.
Написать программу циклической смены атрибутов символов, при этом, атрибут символа N на каждом шаге цикла, должен соответствовать атрибуту символа N-1 на предыдущем шаге цикле.
str – строка для вывода
attr – массив атрибутов символов
Вариант 16.
Написать программу, которая считывает символы с экрана по диагонали, начиная с заданной позиции курсора, и создает два массива: массив кодов символов и массив атрибутов символов.
row – номер строки
col – номер столбца
N – количество считываемых символов
Amass – массив кодов символов
Bmass – массив атрибутов символов
Вариант 17.
Написать программу вывода диагонали из символов, с заданными атрибутами, первый символ которой расположен в заданной позиции курсора.
row – номер строки
col – номер столбца
attr – атрибуты символа
Вариант 18.
Написать программу, стирающую символы, принадлежащие заданному массиву символов, и расположенных в заданном столбце текущей видеостраницы.
symbol_mass – массив символов
col – номер столбца
Вариант 19.
Написать программу, выводящую циклически посимвольно заданную строку, в заданном месте экрана.
row – номер строки
col – номер столбца
str – строка для вывода
Вариант 20.
Написать программу, определяющую количество слов, заключенных между заданными позициями курсора, при условии, что номер строки остается неизменным.
row – номер строки
col_1 – номер первого столбца
col_2 – номер второго столбца
Вариант 21.
Написать программу вывода строки на экран, при этом вторая половина строки (большая) должна быть выведена, начиная с первой заданной позиции курсора, а первая половина (меньшая) – со второй.
row1 – номер строки
col1 – номер столбца
row2 – номер строки
col2 – номер столбца
Вариант 22.
Написать программу нахождения экранной позиции заданного символа, расположенного до указанной позиции курсора.
row – номер строки
col – номер столбца
symbol – символ для поиска
Вариант 23.
Написать программу вывода заданной строки по диагонали, в сторону уменьшения координат курсора, начиная с указанной позиции.
str – строка для вывода
row – номер строки
col – номер столбца
Вариант 24.
Написать программу вывода в заданной позиции курсора символов из заданной строки, которые отсутствуют в заданном массиве символов.
str – строка для вывода
row – номер строки
col – номер столбца
symbol_mass – массив символов
Вариант 25.
Написать программу копирования символов из текущей видеостраницы в заданную, начиная с начальной заданной позиции курсора и до конечной.
row1 – номер строки
col1 – номер столбца
row2 – номер строки
col2 – номер столбца
Nvideo – номер заданной видеостраницы
Вариант 26.
Написать программу, выводящую (с комментариями) в заданной позиции курсора номер видеорежима, а через одну строку – номер текущей видеостраницы.
row – номер строки
col – номер столбца
Вариант 27.
Написать программу, определяющую количество букв «s» в заданной строке экрана.
row – номер строки
Вариант 28.
Написать программу, которая выводит в заданном месте экрана справа налево строку с заданными атрибутами.
str – строка для вывода
row – номер строки
col – номер столбца
attr – атрибуты для вывода
Вариант 29.
Написать программу, строящую грани треугольника из символов заданной строки.
str – строка для вывода
Вариант 30.
Написать программу, стирающую первую строку, в которой встречается символ, соответствующий символу в заданной позиции курсора.
row – номер строки
col – номер столбца
Форма отчетности:
Для защиты лабораторной работы требуется подготовить программный код на языке ассемблер, использованный для получения загрузочного модуля. Обязательным условием допуска к защите лабораторной работы является демонстрация работоспособности загрузочного модуля, а также устные объяснения алгоритма работы программы.
Лабораторная работа №6
Цель лабораторной работы:
Получить знания и овладеть навыками сортировки символьной информации в строке, заданной пользователем.
Теоретические положения:
Команды работы со строками (цепочечные команды)
Строкой в Ассемблере называют последовательность байтов или слов длинной от 1 до 65535 байт. Операции со строками обеспечивают пересылку, сравнение, сканирование строк по значению, а также пересылку строки в аккумулятор или из него. Каждая строковая операция представлена в процессоре двумя командами: одна предназначена для обработки строк состоящих из байт, другая – из слов (их мнемоника различается наличием буквы B (byte) или W (word)).
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 |


