
- •В.А. Афанасьев
- •Часть 1 Лабораторный практикум
- •Предисловие
- •1. Краткая характеристика операционной среды ms-dos в компьютерах с операционной системой Windows
- •2. Составные части ms-dos и её инициализация
- •3. Взаимодействие Ассемблерной программы с ms-dos и аппаратными средствами Компьютера
- •4. Сегментированная организация памяти в реальном режиме. Виды памяти в среде ms-dos
- •Распределение первого мегабайта памяти компьютера
- •Содержание некоторых полей области данных bios
- •5. Программная модель 32-разрядных процессоров i80x86
- •Назначения сегментных регистров
- •6.2.2. Путь выполнения команды
- •6.2.3. Трансляция программы. Опции командной строки
- •6.2.4. Структура программы для .Exe- и .Com-файлов. Образ программы в памяти
- •Сегменты упрощенной модели памяти Small
- •%Title "Имя exe-файла программы"
- •%Title "Имя com – файла программы"
- •6.2.5. Работа с отладчиком Turbo Debugger (td)
- •6.2.6. Форматы машинных команд и их кодирование
- •Определение эффективного адреса
- •Косвенные виды адресации
- •6.2.6.2. Использование 32-битных регистров
- •6.2.7. Работа над синтаксическими ошибками при ассемблировании программы
- •6.3. Задание к работе. Порядок выполнения
- •6.4. Контрольные вопросы
- •Приложения к лабораторной работе № 1 п.1.1. Машинные коды команд базового процессора i8086
- •Машинные коды команд базового процессора i8086
- •П.1.2. Демонстрационные файлы
- •П.1.3. Форматы исполняемых файлов .Exe и .Com на диске
- •А) Листинг prog_com. Lst
- •Содержимое префикса программы psp
- •А) Листинг prog_exe.Lst
- •Б) Машинный код исполняемого файла prog_exe.Exe на диске объёмом 624 байта
- •Формат заголовка исполняемого .Exe – файла на диске
- •7.2.2. Ввод с клавиатуры символьной информации
- •7.2.2.1. Буфер ввода данных с клавиатуры
- •7.2.2.2. Системные функции dos ввода данных с клавиатуры
- •Сравнительная характеристика функций dos ввода с клавиатуры
- •7.2.3. Функции dos вывода данных на экран
- •7.2.4. Расширенные коды ascii и управление программой с клавиатуры
- •Расширенные коды для функциональных клавиш
- •7.2.5. Строковые команды. Общая характеристика
- •Команды обработки строк
- •7.3. Задания к работе. Подготовка и выполнение
- •7.4. Контрольные вопросы
- •Приложения к лабораторной работе № 2 Приложение п.2.1. Примеры реализаций типового задания
- •Приложение п.2.2. Esc-последовательности
- •Параметры Esc-последовательности
- •Приложение п.2.3. Таблица символов в кодировке ascii
- •8.2.2. Прямое программирование видеобуфера в текстовом режиме
- •8.2.3. Справочные данные по функциям bios
- •8.2.3.1. Прерывание int 10h. Видеофункции bios
- •Текстовые видеорежимы и страницы в стандарте vga, поддерживаемые современными видеоконтроллерами
- •8.2.3.2. Рекомендации по использованию видеосервиса bios
- •8.2.3.3. Прерывание int 16h
- •8.2.3.4. Задержка программных операций
- •Int 15h, функция 86h
- •8.3. Варианты индивидуального задания
- •8.4. Контрольные вопросы
- •Приложения к работе № 3 Примеры реализаций типовых заданий п.3.1. Листинг 3.4. Программа получения скан-кодов клавиш клавиатуры
- •П.3.2. Листинг 3.5. Демонстрационная программа использования функций bios для работы с экраном и клавиатурой
- •9.2.1. Представление знаковых и беззнаковых чисел в 16-разрядном компьютере
- •Представление чисел в 16- разрядном компьютере
- •9.2.2. Преобразование ascii-кодов чисел с произвольным основанием в двоичное число
- •9.2.3. Преобразование двоичного числа в ascii-строку числа по произвольному основанию
- •9.2.4. Задание к работе. Порядок выполнения
- •Варианты заданий 1-7
- •Варианты заданий 8-14
- •9.2.5. Вопросы построения многомодульных программ
- •9.2.6. Ассемблирование и компоновка отдельных модулей в программу. Создание библиотеки объектных модулей
- •9.3. Контрольные вопросы
- •Список использованной и рекомендуемой Литературы
- •Оглавление
Параметры Esc-последовательности
Код |
Назначение |
||
0 |
Нормальное изображение (чёрные символы на белом фоне) |
||
1 |
Выделение яркостью |
||
4 |
Включено подчёркивание |
||
5 |
Выделение мерцанием |
||
7 |
Инверсное изображение (белые символы на чёрном фоне) |
||
8 |
Всё включено, символы невидимы (скрытый текст) |
||
Код символа |
Назначение |
Код фона |
Назначение |
30 |
Чёрные |
40 |
Чёрный фон |
31 |
Красные |
41 |
Красный фон |
32 |
Зелёные |
42 |
Зелёный фон |
33 |
Жёлтые |
43 |
Жёлтый фон |
34 |
Синие |
44 |
Синий фон |
35 |
Фиолетовые |
45 |
Фиолетовый фон |
36 |
Бирюзовые (голубые) |
46 |
Бирюзовый (голубой) фон |
37 |
Белые |
47 |
Белый фон |
Листинг 2.5. Демонстрация_1 Esc-последовательности
Ideal
Model small
Stack 256
Dataseg
;Сообщение, оконтуренное рамкой
mes db 27,'[2J',27,'[5;31;46m' ;Очистка экрана и задание цвета (красные на
;бирюзовом фоне)
db 27,'[12;30H',0C9h,22 dup (0CDh),0BBh ;Позиционирование (строка, столбец) и
;символы
db 27,'[13;30H',0BAh,'ESC-последовательности',0BAh ;Позиционирование и символы
db 27,'[14;30H',0C8h,22 dup (0CDh),0BCh ;Позиционирование и символы
db 27,'[0m',27,'[01;01H','$' ;Отмена цвета и позиционирование
Codeseg
Start: mov ax,@data ;Установка в ds адреса
mov ds,ax ;сегмента данных
mov ah,09h ;Функция вывода
mov dx,offset mes
int 21h
Exit: mov ax,04C00h ;Функция DOS 4Сh:выход из программы
int 21h ;Вызов DOS. Останов
End Start ;Конец программы/точка входа
Как известно, кроме обычных символов и других знаков, имеющихся на клавиатуре, на экран можно выводить символы псевдографики, которым соответствуют коды от 0B0h до 0DFh. В приведённой выше программе для формирования двойной рамки используются следующие коды:
║ 0BAh ╗ 0BBh ╝ 0BCh ╚ 0C8h ╔ 0C9h ═ 0CDh
Можно предложить и другой способ использования ESC-последовательностей при выводе на экран сообщений функцией 09h int 21h с использованием атрибутов цвета для фона и символов. Данный способ иллюстрируется следующим фрагментом программы.
Листинг 2.6. Демонстрация_2 Esc-последовательности
Macro outstr message ;макрос вывода строки
mov ah,09h
mov dx,offset message
int 21h
Endm outstr
DATASEG
mes1 db 'Афанасьев В.А.',10,13,'$'
mes2 db '*** Кафедра ВТ ***$'
red_blue db 27,'[31;44m$' ;Задание атрибутов цвета "Красный по синему"
;для изображения текста на экране, выводимого с помощью функции 09h int 21h
green_white db 27,'[32;47m$' ;"Зелёный по белому"
cancel db 27,'[0m$' ;Восстановление атрибутов цвета по умолчанию
CODESEG
Start: mov ax,@data ;Установка в ds адреса
mov ds,ax ;сегмента данных
outstr red_blue ;Установка атрибутов цвета
outstr mes1 ;Вывод сообщения mes1
outstr green_white ;Установка атрибутов цвета
outstr mes2 ;Вывод сообщения mes2
outstr cancel ;Восстановление атрибутов цвета
....
Назначения атрибутов цвета будут действовать на все последующие команды вывода (включая функции BIOS прерывания 10h) до тех пор, пока не будут сделаны другие назначения.