Методическое пособие по решению задач лабораторного практикума по курсу "ЭВУ и системы" (изучение архитектуры и системы команд INTEL-совместимых микропроцессоров). Коршунов А.Д. - 19 стр.

UptoLike

Составители: 

19
E. Обрабатываем массивы данных.
Дан массив байтов. Получить другой массив, в котором каждый элемент первого
массива увеличен на 5. Пример исходных данных: (1,1,2). Результат: (6,6,7).
Рассматривая массив как строку байтов, разместим исходные данные в сегменте
данных (DS) с адреса 0000h, а результат - в дополнительном сегменте (ES) также с адреса
0000h.
Программа для учебной модели AsmEd приведена ниже.
MOV SI, 0 ; начальное значение для LODS
MOV DI, 0 ; начальное значение для STOS
MOV CX, 3 ; в нашем примере - три исходных элемента
M:
LODSB ; загрузим очередной байт массива
ADD AL, 5 ; обработаем его, как указано в задаче
STOSB ; запишем обработанный байт в массив результата
LOOP M
HLT
Исходные данные, результат, выполнение.
Запустив AsmEd, наберём приведённую программу. Переключившись в сегмент
данных (0001:0000h) и нажимая Shift-Enter, введём 1, 1, 2 в три последовательно
расположенных ячейки. Далее следует переключиться в дополнительный сегмент данных
(0003:0000h), откомпилировать программу (F9), запустить её (F5). Мы увидим в
дополнительном сегменте результат: 6, 6, 7.
F. Программируем дисплейный адаптер.
При работе адаптера в текстовом режиме изображение состоит, как правило, из 25
строк по 80 символов в каждой. Этот режим имеет номер 3 (для функции переключения
режимов). Изображение размещается в видеобуфере с началом по адресу B800h:0000h для
реального адаптера и 0F600h:0000h для модели (виртуального дисплея системы AsmEd).
Каждому символу на экране соответствует два байтас четным и нечетным адресом.
Байты с чётными адресами (0, 2, 4…) содержат ASCII-коды отображенных на экране
символов, байты с нечётными адресами (1, 3, 5…) – их цветовые атрибуты, а именно цвет
символа, цвет фона (последний задается для каждого знакоместа отдельно, а не сразу для
всего экрана) и признак аппаратного мерцания (если он установлен, символ высвечивается
и гаснет с частотой примерно два раза в секунду). Формат атрибутного байта следующий:
Здесь биты R, G, B означают включение красного, зеленого, синего цветовых
компонентов соответственно, I (Intensity) – признак повышенной яркости, F
(Flash) – атрибут мерцания. Очевидно, что можно получить 16 цветов символа, 8
цветов фона, наличие или отсутствие мерцания. Например, байт 00001010 задает
ярко-зеленый символ на черном фоне; байт 10010110 – желтый (R+G) мерцающий
                                                                                     19
E. Обрабатываем массивы данных.
      Дан массив байтов. Получить другой массив, в котором каждый элемент первого
массива увеличен на 5. Пример исходных данных: (1,1,2). Результат: (6,6,7).

       Рассматривая массив как строку байтов, разместим исходные данные в сегменте
данных (DS) с адреса 0000h, а результат - в дополнительном сегменте (ES) также с адреса
0000h.
       Программа для учебной модели AsmEd приведена ниже.

             MOV SI, 0           ; начальное значение для LODS
             MOV DI, 0           ; начальное значение для STOS
             MOV CX, 3           ; в нашем примере - три исходных элемента
      M:
             LODSB               ; загрузим очередной байт массива
             ADD AL, 5           ; обработаем его, как указано в задаче
             STOSB               ; запишем обработанный байт в массив результата
             LOOP M
             HLT

      Исходные данные, результат, выполнение.

       Запустив AsmEd, наберём приведённую программу. Переключившись в сегмент
данных (0001:0000h) и нажимая Shift-Enter, введём 1, 1, 2 в три последовательно
расположенных ячейки. Далее следует переключиться в дополнительный сегмент данных
(0003:0000h), откомпилировать программу (F9), запустить её (F5). Мы увидим в
дополнительном сегменте результат: 6, 6, 7.

F. Программируем дисплейный адаптер.

       При работе адаптера в текстовом режиме изображение состоит, как правило, из 25
строк по 80 символов в каждой. Этот режим имеет номер 3 (для функции переключения
режимов). Изображение размещается в видеобуфере с началом по адресу B800h:0000h для
реального адаптера и 0F600h:0000h для модели (виртуального дисплея системы AsmEd).
Каждому символу на экране соответствует два байта – с четным и нечетным адресом.
Байты с чётными адресами (0, 2, 4…) содержат ASCII-коды отображенных на экране
символов, байты с нечётными адресами (1, 3, 5…) – их цветовые атрибуты, а именно цвет
символа, цвет фона (последний задается для каждого знакоместа отдельно, а не сразу для
всего экрана) и признак аппаратного мерцания (если он установлен, символ высвечивается
и гаснет с частотой примерно два раза в секунду). Формат атрибутного байта следующий:




       Здесь биты R, G, B означают включение красного, зеленого, синего цветовых
компонентов соответственно, I (Intensity) – признак повышенной яркости, F
(Flash) – атрибут мерцания. Очевидно, что можно получить 16 цветов символа, 8
цветов фона, наличие или отсутствие мерцания. Например, байт 00001010 задает
ярко-зеленый символ на черном фоне; байт 10010110 – желтый (R+G) мерцающий