Встроенный ассемблер, графика в Турбо Паскале

Атомная энергетика. Ядерные реакторы АЭС. Атомный флот. Ядерное оружие

РБМК-1000
Гражданский суда
Авиация

Высшая математика

Задачи
Практикум
Карта сайта
Ядерные реакторы на быстрых нейтронах
География размещения БН
Проект БРЕСТ-ОД-300
Проект БРЕСТ-1200
Реактор БР-5 (10), г.Обнинск
Реактор БОР-60, г. Димитровград
Реактор БН-350, г. Шевченко
Реактор БН-600
Реактор БН-800
Проектные решения систем безопасности
АЭС с БН-800
Схемы обращения с РАО на АЭС с БН-800
Реактор БН-1200
Реализация принципа естественной безопасности в проекте БН-1200
ВВЭР
(Водо-Водяной Энергетический Реактор)
АЭС с ВВЭР-440
ВВЭР-1200
ВВЭР-1000
История разработки и сооружения
Конструктивные особенности реактора ВВЭР
Принципиальная тепловая схема
Реактор Большой Мощности Канальный (РБМК)
РБМК-1000 история создания
Устройство реактора РБМК-1000
Концепции безопасности реакторов РБМК
Тепловыделяющая сборка
Атомные станции
Белоярская АЭС
Балаковская АЭС
Балтийская (Калининградская) станция
Ленинградская АЭС
Ленинградская АЭС-2
Белорусская АЭС
Нововоронежская АЭС
Нововоронежская АЭС-2
Ростовская АЭС
Атомная энергетика
Смоленская атомная станция САЭС
Месторасположение Смоленской АЭС
История строительства
Деятельность
Экологическая политика
Экологический контроль
Атомные надводные корабли
Суда с ядерными энергетическими установками в России
Обзор судов с ядерной энергетической установкой
Атомные энергетические установки в корабельной энергетике
Атомная установка на авианосце
Атомный авианосец проекта «Шторм»
Тяжёлые атомные ракетные крейсеры проекта «Орлан»
История создания крейсеров проекта «Орлан»
Вооружение крейсеров проекта «Орлан»
Тяжелый атомный ракетный крейсер «Киров»
Тяжелый атомный крейсер «Петр Великий»
Разведывательный корабль «Урал»
Тяжелый авианесущий крейсер «Ульяновск»
Атомные ледоколы
Действующие ледоколы России
Атомный ледокол "Россия"
Ледоколы класса "Арктика"
Легендарный ледокол «Ленин»
ПЕРСПЕКТИВЫ АТОМНОГО ПРИВОДА
РИТМ-200 реактор для атомного ледокола
Судовая ядерная ППУ ледокола
Реактор ледокола
Корпус реактора
Система компенсации давления
Система газоудаления
Особенности парогенераторов
Второй контур
Реактор атомохода «Ленин»
Реакторы ОК-150
Универсальный двухосадочный атомный ледокол ЛК-60
Гражданские атомные плавсредства
Атомный сухогруз «Фукусима»
Саванна
ТРАНСПОРТНЫЕ СУДА
Рудовоз Otto Hahn («Отто Ган»)
Атомная подводная лодка
Реакторы для подводных лодок
АПЛ проекта 627
Атомная шестиракетная субмарина «К-19»
Ракетный подводный крейсер стратегического назначения
Атомные подлодки типа «Огайо»
АПЛ «Наутилус». США.
Ядерный реактор для авиации
Атомный противолодочный самолет
Создание атомного бомбардировщика
Летающая «утка» М-60/М-30
Атомный самолет М-19
Самолет с ядерным двигателем NB-36H (X6)
Ядерные двигатели
Стратегия США
Летающая атомная лаборатория
лаборатория
ПЛАВУЧИЕ ЭЛЕКТРОСТАНЦИИ
ПАТЭС Академик Ломоносов
Первый в мире плавающий реактор МН-1А
Физика
Основы электротехники
Базовый общетехнический курс
по электротехнике
Общая электротехника
Примеры решения задач по электротехнике
Решение задач по электротехнике
использование MATLAB
Язык программирования MATLAB
Расчет электрических цепей в Simulink
Моделирование цепей переменного ток
Электрические и магнитные цепи
Электротехнические материалы
Физические основы механики
Волновая оптика
Механика
Теория и синтез машин и механизмов
Информатика
Основы Web технологий
Учебник системного администратор
Основы организации персонального компьютера
Основы вычислительных систем
Основы вычислительных комплексов
Информационные системы и сети
Основные понятия об информации
и информатике
Устройство персонального компьютера
Windows
Microsoft Word
Microsoft Excel
Microsoft Access
Введение в локальные вычислительные сети
Интернет
Средства сжатия информации
Основы защиты компьютерной информации
Основы алгоритмизации
Система программирования Турбо Паскаль
Встроенный ассемблер
Turbo Visio
JavaScript
Примеры программирования на Java
Примеры скриптов для клиента на языке JavaScriptScript
Учебник PHP
Паскаль
Графика
Единая система конструкторской документации
Начертательная геометрия
Сопряжение
Курс лекций по начерталке
Практикум по решению задач
Вопросы к экзамену по черчению
Оформление чертежей
Инженерная графика
Машиностроительное черчение
Выполнение чертежей деталей
Виды соединений деталей
Позиционные задачи
Построения центральных проекций
Искусство
Литература и искусство эпохи Возрождения (Ренессанса)
Примеры решения задач по математике
Элементарная математика
Примеры решения задач курсовой
Кратные интегралы
Векторный анализ
Аналитическая геометрия
Курс лекций математического анализа
ТФКП
Типовой расчет по высшей математике
Введение в математический анализ
Определённый интеграл
Замена переменных
Числовые ряды
Правила вычисления неопределенных интегралов
Дифференциальные уравнения
 

 

Ассемблером называется машинно-зависимый компилятор, преобразующий специальным образом составленные текстовые строки в машинные инструкции. Встроенный ассемблер (далее - просто ассемблер) дает возможность программировать на уровне отдельных машинных инструкций В МП 8086/8088 имеется 14 регистров. В функциональном отношении они делятся на группы В архитектуре МП 8086/8088 адрес любого байта задается двумя 16-битовыми словами - сегментом и смещением В приводимых ниже таблицах указывается мнемоника всех допустимых инструкций для МП 8086/8088 Приведенное выше общее описание архитектуры МП 8086/8088 является базовым для любого ассемблера, в том числе и для встроенного ассемблера Турбо Паскаля Здесь и далее ассемблерными командами называются команды на языке встроенного ассемблера Встроенный ассемблер не поддерживает никакие директивы, обычно используемые в других ассемблерах, за исключением DB, DW, DD Ассемблерные подпрограммы - это процедуры и функции, объявленные с директивой Assembler. В таких подпрограммах исполняемая часть не содержит begin... end и состоит из единственного ассемблерного оператора asm... end

Во многих случаях стандартные для Паскаля возможности ввода/вывода данных с помощью процедур Read, ReadLn, Write, WriteLn оказываются явно недостаточными для разработки удобных в использовании диалоговых программ. Звуковые возможности ПК основаны на одноканальном управляемом звуковом генераторе, вырабатывающем электромагнитные колебания звуковой частоты. Колебания подаются на встроенный в ПК динамик и заставляют его звучать. Дополнительные возможности управления клавиатурой реализуются двумя функциями: KeyPressed и ReadKey. Библиотека Turbo Vision способна удовлетворить самым высоким требованиям и я настоятельно рекомендую обращаться к ней при программировании сложных текстовых изображений (меню, окон и т.п.).

Начиная с версии 4.0, в состав Турбо Паскаля включена мощная библиотека графических подпрограмм Graph, остающаяся практически неизменной во всех последующих версиях. Настройка графических процедур на работу с конкретным адаптером достигается за счет подключения нужного графического драйвера Процедура InitGraph. Инициирует графический режим работы адаптера Многие графические процедуры и функции используют указатель текущей позиции на экране, который в отличие от текстового курсора невидим Процедура PutPixel. Вычерчивает прямоугольник с указанными координатами углов Функция ImageSize. Возвращает размер памяти в байтах, необходимый для размещения прямоугольного фрагмента изображения Описываемые ниже стандартные процедуры и функции поддерживают вывод текстовых сообщений в графическом режиме Процедура Circle. Вычерчивает окружность В Турбо Паскале имеется возможность включения графического драйвера и штриховых шрифтов непосредственно в тело программы. Процедура SetColor. Устанавливает текущий цвет для выводимых линий и символов

В этой главе мы попробуем разработать программу, которая использует некоторые возможности Turbo Vision. Пусть, например, нам необходимо создать простейшую информационную систему - нечто вроде электронной записной книжки. Предполагается, что данные, используемые этой системой, будут храниться в виде записей в дисковом файле. Наша задача - разработать удобную диалоговую программу, облегчающую доступ к файловым данным. Таким образом, нам необходимо модифицировать стандартное поведение объекта Notebook. Для этого мы должны отыскать в типе TApplication метод, ответственный за создание строки статуса Необходимо пояснить назначение вновь введенных констант стХХХХ. Вернемся к смысловой части нашего примера и подумаем о том, какие еще свойства следует придать программе Работа большинства прикладных программ проходит в три этапа: подготовка к работе, собственно работа и, наконец, ее завершение. В нашем случае к подготовительному этапу можно отнести такие действия, как анализ существования файла данных и его (файла) подготовка к работе. В обработчике событий TNotebook.HandleEvent мы предусмотрели вызовы нескольких процедур, с помощью которых реализуются конкретные действия программы. Настала пора запрограммировать эти действия. При попытке откомпилировать полученный вариант программы Турбо Паскаль сообщит о неизвестном идентификаторе DisableCommands. В объекте TScroller для вывода текста предусмотрен абстрактный метод Draw. Абстрактным он называется потому, что не выполняет никакой полезной работы. Однако именно к этому методу обращается обработчик событий объекта TScroller всякий раз, когда понадобится обновить на экране вид окна Пора заняться основной содержательной частью нашей программы - процедурой Work. Весьма важным принципом Turbo Vision является принцип отделения процесса создания видимых изображений от процесса обработки данных Как уже отмечалось, с помощью процедуры Draw можно выводить обычный текст и выделенный текст Обработчик событий диалогового окна поддерживает только стандартные команды cmClose, cmOk, cmCancel Мы создали программу, которая погружает пользователя в среду объектно-ориентированного диалога Turbo Vision: она поддерживает командные клавиши, работу с мышью, может сменить каталог или диск, выбрать нужный файл и загрузить его в окно просмотра В процедуре Draw переменная Color задает атрибуты (цвет символов и цвет фона) символов, выводимых с помощью методов MoveChar и MoveStr Режим редактирования отличается от режима добавления записей двумя обстоятельствами: во-первых, в режиме редактирования поля ввода данных окна должны содержать текст, взятый из редактируемой записи, а в режиме ввода эти поля пусты Для вывода текста мы использовали глобальный массив Lines При реализации режима удаления записи нам нужно учесть тот факт, что порядок следования записей в файле и коллекции может быть различным Для поиска нужной записи сформируем диалоговое окно Итак, мы завершили создание диалоговой программы, обслуживающей электронную «записную книжку»

Все свойства Turbo Vision заключены в полях и методах входящих в библиотеку объектов. Объект TObject никогда не используется самостоятельно и служит основой для начинающегося с него дерева объектов В функциональном отношении все потомки объекта TObject делятся на две группы Видимый объект - это любой объект, который является потомком TView и может быть изображен на экране в текстовом режиме работы дисплея Абстрактная группа - это объект TGroup. Этот объект, вообще говоря, не является абстрактным, однако его экземпляры практически никогда не используются в программах: основное назначение объекта - служить основой иерархии родственных объектов пользователя. Все множество объектов Turbo Vision строится на базе трех примитивных объектов: TPoint, TRect и TObject TCollection реализует набор элементов, подобный массивам языка Турбо Паскаль Объект TStringList реализует специальный вид строкового ресурса, в котором к строкам можно обращаться с помощью числового индекса Для создания рамки окна и кнопок изменения размера окна и его закрытия предназначен объект TFrame Абстрактный объект TValidator и его потомки образуют группу объектов-контролеров. Поток - это обобщение процедур ввода/вывода данных.

Любой видимый элемент Turbo Vision имеет два важнейших свойства: он полностью контролирует изображение в пределах выделенного ему участка экрана и знает, как обрабатывать связанные с этим участком события - нажатие на клавиши или отметку мышью. Видимый элемент может быть частично или полностью перекрыт другими видимыми элементами. Замечательным свойством видимых элементов Turbo Vision является их способность образовывать группы. Все группы являются потомками абстрактного объекта TGroup. Все цвета в Turbo Vision определяются системой палитр: за каждым стандартным видимым элементом закреплен свой набор условных номеров цветов, называемый палитрой. Создание группы осуществляется за счет создания экземпляра объекта-наследника TGroup и присоединения к нему всех видимых элементов группы. Видимый элемент владеет прямоугольным участком экрана. Все программы в среде Turbo Vision рассчитаны на диалоговый способ взаимодействия с пользователем, а следовательно, в них активно используются точки ветвления, управляемые командами пользователя (точки диалога). Каждый видимый элемент Turbo Vision имеет 5 полей, которые определяют его поведение в диалоговой среде и которые можно использовать для того, чтобы изменить свойства элемента Последовательное присоединение подэлементов к группе приводит к так называемому Z-упорядочению видимых элементов Поле Options представляет собой шестнадцатиразрядное слово, биты (разряды) Внутри любой группы видимых элементов в каждый момент времени может быть выбран (активизирован) один и только один элемент. Поле DragMode размером в один байт определяет, как ведет себя видимый элемент при перемещении владельца. Напомню, что Turbo Vision позволяет перемещать окно на экране с помощью мыши, если «схватить» мышью верхнюю рамку окна. Шестнадцатиразрядное поле State хранит различные признаки, определяющие поведение или состояние видимого элемента В отличие от других полей поле State доступно только для чтения (поля Options, DragMode и GrowMode доступны также и для записи). Восьмиразрядное поле GrowMode определяет, как должен изменяться видимый элемент, когда его владелец (группа) изменяет свои размеры

События представляют собой небольшие пакеты информации, которыми обмениваются видимые элементы и которые создаются средой Turbo Vision в ответ на те или иные действия пользователя. Нажатие на любую клавишу или манипуляция мышью порождает событие, которое передается по цепочке активности видимых элементов до тех пор, пока не найдется элемент, знающий как обработать это событие Важно помнить, что события сами по себе не производят никаких действий в программе, но в ответ на событие могут создаваться новые видимые элементы, модифицироваться или уничтожаться существующие элементы, что и приводит к изменению содержимого экрана. Существуют 4 основных класса событий: события от мыши, события от клавиатуры, сообщения и пустые события. Внутри класса события могут подразделяться на виды. В этом классе событий имеется единственное событие evKeyDown, связанное с нажатием на клавишу Как уже говорилось, любая программа, работающая в среде Turbo Vision, является прямым или косвенным (через TApplicatiori) потомком TProgram и основана на обращении к трем главным методам этого объекта: Init, Run и Done. Обычно активные события (evKeyDown и evCommand) получают и обрабатывают видимые элементы, принадлежащие цепочке активности Поскольку события обычно связаны с какими-то действиями пользователя программа должна, как правило, реагировать на эти действия изменением видимого изображения В качестве значения константы-команды можно использовать любое число в диапазоне от О до 65535, однако следует учесть, что диапазоны 0...99 и 2S6...999 Turbo Vision резервирует для стандартных команд и их не следует использовать для определения команд пользователя Как указать на необходимость выполнения команды? Для этого в Turbo Vision Вы просто создаете событие-команду (evCommand), в поле Command которой помещаете код нужной команды Позиционированные события - это всегда события от мыши (evMouse). После того как Вы определили команду и установили элемент управления, который генерирует ее (например, элемент меню или кнопка диалогового окна), Вам нужно научить Ваш видимый элемент реагировать на возникновение этой команды. Единственным источником событий является метод TView.GetEvent. Поскольку программа, работающая в среде Turbo Vision, рассчитана на диалог с пользователем, в ней всегда найдутся такие промежутки времени, в течение которых она просто пассивно ожидает действий пользователя. События, определенные пользователем Каждый видимый элемент имеет поле EventMask В Turbo Vision предусмотрены средства, облегчающие создание контекстно-зависимой справочной службы. Иерархия объектов Turbo Vision построена так, чтобы любой объект имел все необходимые для его работы поля и методы. Некоторые события могут оказаться ненужными в данном контексте программы

Вернуться на главную