Язык Assembler - программирование



   Красиво | paradise-saratov.ru | электромеханическая прочистка канализации         Заходите на nso.nsexy.ru - тут собрано всё для досуга! | Корректировка трансляции для моб.устройств и без выходных узнать больше. | Эро рассказы на ресурсе https://sexbab.com/porno-rasskazy/    Shoebuy Coupons and Shoebuy Deals - deals and discounts | Deluxe Business Services Coupons deluxe business promo codes for 2022. Enjoy life.     

  

Справка по Ассемблеру для AVR

Компилятор транслирует исходные коды с языка ассемблера в объектный код. Полученный объектный код можно использовать в симуляторе ATMEL AVR Studio, либо в эмуляторе ATMEL AVR In-Circuit Emulator. Компилятор также генерирует код, который может быть непосредственно запрограммирован в микроконтроллеры AVR.
Компилятор генерирует код, который не требует линковки.
Компилятор работает под Microsoft Windows 3.11, Microsoft Windows95 и Microsoft Windows NT. Кроме этого есть консольная версия для MS-DOS.
Набор инструкций семейства микроконтроллеров AVR описан в данном документе кратко, для более полной информации по инструкциям обращайтесь к полному описанию инструкций и документации по конкретному микроконтроллеру.

Справка по Ассемблеру для AVR
Любая строка может начинаться с метки, которая является набором символов заканчивающимся двоеточием. Метки используются для указания места, в которое передаётся управление при переходах, а также для задания имён переменных.

Исходные коды
Примеры:
Инструкции процессоров AVR
Арифметические и логические инструкции
Инструкции ветвления
Инструкции передачи данных
Инструкции работы с битами
Директивы ассемблера
BYTE - Зарезервировать байты в ОЗУ
CSEG - Программный сегмент

Ассемблер. Компоновщик. Загрузчик. Макрогенератор
Сначала будем предполагать, что транслируемая программа состоит только из одного модуля, т.е. в ней нет внешних и общих имен, а позже рассмотрим, какие изменения надо внести в работу ассемблера, чтобы учесть особенности многомодульных программ. Отметим также, что ассемблер работает после макрогенератора, поэтому в программе, которая подается на вход ассемблеру, нет никаких макрокоманд и других директив макроязыка.

Основная идея ассемблирования.
Два прохода ассемблера.
Таблицы Ассемблера.
Таблица директив.
Таблица мнемокодов.
Таблица имен (ТИ).
Таблица сегментов (ТС).
Распределение сегментных регистров (ТРСР).

Эльфы большие и маленькие
Программирование на ассемблере под UNIX'ом многими рассматривается как извращение, граничащее со злостным преступлением, препятствующим переносу программы на другие платформы, даже если никакой перенос не планируется. Являясь колыбелью десятков языков, таких как C, Perl, Haskell, Lisp, Simula и AWK, UNIX поддерживает ассемблер лишь формально.

Программирование с libc— семейная идиллия
Простейшая ассемблерная программа elf_libc.S
Сборка нашей первой программы
Обрезание символьной информации
Ручная сборка
Реакция Linux'а на попытку ручкой сборки
Полуручная, "полуавтоматическая" сборка
Отладка ассемблерных программ
Отладка программы без символьной информации

Аудит и дизассемблирование exploit'ов
Сообщения о дырах появляются постоянно. Каждый день приносит по 10-20 новых дыр, затрагивающих практически весь спектр аппаратно-программного обеспечения. Вы до сих пор пользуетесь Лисом, считая его безопасным? Да как бы не так! За свое недолгое время существования он успел обрасти полусотней дыр, в том числе и критических. Ладно, оставим Лиса в покое и возьмем Оперу— почти два десятка ошибок (из которых 17 зарегистрировано на одном лишь securityfocus'е) быстро прочищают мозги от рекламной шелухи, позиционирующей Оперу не только как самый быстрый, но и по настоящему безопасный браузер.

Как препарируют exploit'ы
Анализ message queuing exploit'а
Фрагмент exploit'а - сборка пакета-убийцы
Устройство убийцы, передаваемого на сервер
Массив offsets хранит
Последовательность pop reg/pop reg/retn
Новый SEH-фрейм (Visual C++)
Расположение SEH относительно буферов
Структура SEH-фреймов

Архитектура x86-64 под скальпелем ассемблерщика
Нам дарованы 64-битные операнды и 64-битная адресация. Казалось бы, лишние разряды карман не тянут и если не пригодятся, то по крайней мере не помешают. Так ведь нет! С ростом разрядности увеличивается и длина машинных команд, а, значит, время их загрузки/декодирования и размеры программы, поэтому для достижения не худшей производительности 64-битный процессор должен иметь более быструю память и более емкий кэш

64-разрядный лейбл на китайском
Что нам понадобиться?
Реакция 64-битного Линуха
Сборка BOCHS'а с поддержкой эмуляции x86-64
Сборка BOCHS'а для компиляции Visual C++
Специальная сборка BOCHS'а
Загрузка 64-разрядного Дебиана под QEMU
64-битная Win в стадии начальной загрузки
Обзор x86-64
Регистры, доступные в x86-64 режиме

Ассемблер - экстремальная оптимизация
Путь начинающего ассемблерщика не только долог, но еще и тернист. Повсюду торчат острые шипы, дорогу преграждают разломы, ловушки и капканы. В темной чаще горят злые глаза, доносятся какие-то ухающие звуки и прочие неблагоприятные факторы, нагнетающие мрачную атмосферу и серьезно затрудняющую продвижение вперед.

Готовые функции на блюдечке
Некоторые программисты
Запуск процесса на выполнение через win32 API
Запуск процесса на выполнение
Кто-то предпочитает
Запуск процесса на выполнение
Настоящие программисты
Врезка вызов API-функций из вставок
Логичный, но неправильный способ вызова API
Дизассемблер показываем

Программирование на Ассемблере под DOS
Теоретически гвозди можно забивать и голыми руками. Но намного быстрее и безболезненнее делать это с помощью молотка. Пользоваться им, как известно, каждый дурак умеет. Чего там сложного? Взял оный в руки - и молоти: раз по гвоздю, два раза по пальцам (понимание приходит с опытом). Молотки бывают разные: большие и маленькие, с длинной ручкой и с короткой ручкой, железные и деревянные, приспособленные для забивания гвоздей и приспособленные для пробивания черепов

Проба молотка
Задача 2.
Задача 3.
Задача 4.
Задача 5
Задача 6
Несколько "тупых" процедурок
Задача 2.
Задача 3.
Задача 4.

Секреты ассемблирования дизассемблерных листингов
Обычно дизассемблер используется для реконструкции алгоритма подопытной программы, который после этого переписывается на Си/Си++ или в двоичном файле правится тот нехороший jx, который не дает приложению работать, если не найден ключевой файл или демонстрационный период давно истек.

Первое боевое крещение
Исходный текст программы demo_comsole.c
Успешно дизассемблированный файл
Ассемблеры, поддерживаемые IDA Pro 4.7
Результат непосредственной трансляции
Критическая ошибка ассемблирования листинга
Транслятор не может найти имена функций
Сколлапсированные функции
Реакция транслятора на объявления структур
Сколлапсированные структуры в файле

Ассемблер и Win32
Программирование на ассемблере под Win32 воспринимается весьма не однозначно. Считается, что написание приложений слишком сложно для применения ассемблера. Собственно обсуждению того насколько оправдана такая точка зрения и посвящена данная статья. Она не ставит своей целью обучение программированию под Win32 или обучение ассемблеру, я подразумеваю, что читатели имеют определённые знания в этих областях.

Пример 1. Программа работы с диалогом
Краткие комментарии к программе
Пример 2. Динамическая библиотека
Краткие комментарии к динамической библиотеке
Пример 3. Оконное приложение

Сравнение ассемблерных трансляторов
Компиляторы языков высокого уровня (Си, Паскаль) в определенной степени совместимы между собой и хотя исходный текст, предназначенный для одного компилятора, не всегда без переделок транслируется на другом, синтаксис и прочие языковые концепции остаются неизменными, позволяя "летать" между MSVC, IntelC++, GCC, Open WATCOM, сравнивая полноту поддержки Стандарта, скорость трансляции, качество кодогенерации, популярность компилятора и вытекающее отсюда изобилие (недостаток) библиотек и компонент к нему.

Основополагающие критерии
MASM
TASM
FASM
NASM

Ассемблерные головоломки или может ли машина понимать естественный язык
Поиск текстовых строк, интерпретируемых как осмысленный код,— очень древнее увлечение, которым "болели" еще во времена "динозавров". В зависимости от структуры машинной команды, сложность решения задачи варьируются в очень широких пределах. Некоторые платформы вообще не позволяют написать ничего осмысленного, некоторые делают это настолько тривиальным, что пропадает весь интерес.

Алфавит
Внешний вид помощника TECH HELP!
Матрица команд
Однобайтовые команды первой группы
Двух и трех байтовые команды второй группы
Дизассемблерный листинг "HELLO,WORLD!$"
Извращения начинаются
Ассемблерная программа
Подготовка регистра AH в работе

Ассемблерные извращения - натягиваем стек
Ассемблер представляет практически неограниченную свободу для самовыражения и всевозможных извращений, что выгодно отличает его от языков высокого уровня. вот мы и воспользуемся этой возможностью, извратившись не по детски и сотворив со стеком то, о чем приплюснутый си только мечтает.

Турбопередача стековых аргументов
Классический способ передачи аргументов
Оптимизированный способ передачи аргументов
Дизассемблерный листинг передачи аргументов
Передача стековых аргументов напрямую
Вызов функции с адресом возврата командой JMP
Повторное использование кадра стека
Вызов функции с подготовленными аргументами
Защита адреса возврата от переполнения
Передача аргументов при раздельных стеках

Obj файлы на топчане или
Освежая в памяти события давно минувших дней (уже листья успели облететь за это время), напомним, что исправив кучу багофичей IDAPro (перечисление которых заняло бы слишком много места) мы дошли до файла demo_3.asm, который нас удалось ассемблировать MASM'ом, со следующими ключам: ML.EXE /coff /I. /c /Cp /Zp1 /Zm demo_3.asm

Битва за API
Колдование макроса
Непонятки с imp_RtlUnwind
Линковка
Запуск файла или отложенное заключение

Ассемблер — это просто хадкорный ассемблер
Эта рубрика открывает двери в удивительный мир, расположенный за фасадом высокоуровневого программирования. Здесь где вращаются те шестеренки, чтокоторые приводят в движение все остальное. ассемблер— это разговор с компьютером на естественном для него языке, радость общение с голым железом, высший пилотаж особого полета свободной мысли и безграничное пространство для самовыражения

Ассемблер— это просто [хадкорный ассемблер]
Ассемблер— это не только ценный мех
Философия ассемблера
Объяснение ассемблера на сишных примерах
Ассемблерные вставки как тестовый стенд
О планах на будущее
Врезка. инструментарий

Разное IDE для больших проектов на ассемблере
Итак, сначала небольшое введение, посвященное тому, зачем мне (в частности) вообще нужно IDE. Дело в том, что наличие IDE практически необязательно для проектов с небольшим размером. Под проектами с небольшим размером я подразумеваю проекты с количеством строк, меньшим 1000. Как правило такая программа состоит из одного файла (или один .asm и один .inc) и содержит 10-15 процедур, столько же структур, макросов, глобальных переменных и констант.

Требования в IDE
Некоторые примеры IDE

Война миров - Ассемблер против Си
Действительно ли эффективны (неэффективны) си-компиляторы и насколько большой выигрыш можно получить, переписав программу на языке ассемблера. какую цену за это придется заплатить? Об этих и многих других вопросах, волнующих хакерскую общественность уже несколько лет, мыщъх постарался дать предельно объективный и непредвзятый ответ

Эффективность кодогенерации си компиляторов
Ключевой фрагмент программы CRC.c
Трансляция crc() компилятором VC++ 6.0
Ручная ассемблерная реализация crc()
Набор ассемблерной программы в TSE Pro
Трансляция crc() компилятором GCC 2.95
IDA Pro за работой
Трансляция crc() компилятором GCC 3.4.2
Влияние кратности разворота цикла
Оптимизированный crc() с развернутым циклом

Набор статей и руководств по дизассемблеру IDA
В диалоге загрузки файла укажите соответствующие значения для параметров "Loading segment" и "Loading offset". Эти параметры имеют смысл только для бинарных, COM и EXE файлов. Для загрузки файлов более сложного формата по нужным адресам используйте ручную загрузку (пометьте флаг "Manual load")

Как загрузить файл по требуемому адресу?
Как дизассемблировать для процессора?
Я загрузил файл. И что?
IDA не превратила байты в инструкции!!!
Hа экране некоторые числа красные. Это зачем?
А что такое автоанализ?
Как посмотреть на переменную/функцию?
А если я не помню точного написания?
Как переключать окна?
Как найти текстовую строку в файле?

Установка и использование IDA Pro
Установка программы обычно не вызывает никаких проблем. После запуска дизассемблера (файл idaw.exe) появляется окно сессии DOS. Не пугайтесь, IDA Pro - нормальное 32-разрядное приложение, просто оно консольное (работает в окне сессии DOS). Именно поэтому интерфейс IDA Pro напоминает интерфейс обычной DOS-программы

Установка и использование IDA Pro
Установка и использование IDA Pro - 2

Внутренности IDA Pro 4.15
В общем, от природы милостей я решил не дожидаться, а покопаться во внутренностях свежепоявившейся у меня версией IDA Pro самостоятельно. Для чего все это нужно, все еще кто-нибудь может вполне справедливо спросить меня ? Чтобы понять, как же программировать на IDA API (например в pluginах) все то же самое (и даже лучше), что можно сделать на IDC или топча клавиатуру в "интерактивном" режиме.

Внутренности IDA Pro 4.15
О чем это все
Требования
Как распаковать
Ковыряем внутренности
IDA.WLL
IDAW.EXE
Faked ida.wll
Жалобы и предложения

Вирусы в скриптах IDA
Первый пик массовой вирусной эпидемии пришелся на некогда популярный компьютер "Эппл". Наиболее излюбленным объектом атаки в то время оказался загрузочный сектор гибких магнитных дисков. Очень скоро появилось множество простых утилит, которые проверяли целостность содержимого загрузочного сектора при его запуске, а так же резидентов, которые просто блокировали запись в оный до подтверждения пользователя.

Вирусы в скриптах IDA

Установка и использование IDA Pro
Практически все настройки (кроме цветовой палитры) осуществляются через файл ida.cfg В первую очередь, давайте поменяем размеры экрана программы. Установленный по умолчанию размер на разрешении 1024*768 не очень удобен

Установка и использование IDA Pro

Защита IDA.KEY
Если Вы поищите в Сети, то вполне вероятно сможете найти старые варианты IDA с генераторами IDA.KEY. Не тратьте время на шифрование и дешифрование программ, Вы играете на чужом поле. Значительно легче предоставить возможность дешифрования Вашему компьютеру, а затем посмотреть, что получилось. Загрузите SotfICE, установите прерывание 'bpx createfileA do "d esp-4"', и подождите, пока в эту функцию не будет передан 'IDA.KEY'. Запомните дескриптор (handle), возвращаемый в EAX.

Защита IDA.KEY
Реконструирование IDA.WLL
Ida.wll (исходный)
Ida.dmp
Ida.key
Ida.key

Библиотека для ассемблера x86 IDA Pro
Вы должны знать ассемблер процессоров семейства Intel x86. Также, поскольку на сей раз я представляю библиотеку для pluginов к IDA Pro, Вы должны иметь копию этого замечательного дизассемблера (библиотека была написана для версии 3.85b, и, поскольку я не располагаю другими версиями, поддерживающими plugins (такая возможность появилась в версии 3.84), то я не могу гарантировать её работоспособность на других версиях IDA). Если же Вы намерены пользоваться исходным кодом, Вам нужно знать C++ ,и для сборки потребуются Borland C++ 5.02 или Watcom 10, а также IDA SDK для Вашей версии IDA.

Требования
Как IDA дизассемблирует программы
Для чего предназначена моя библиотека
Конвертор inst.pl

Assembler - язык неограниченных возможностей

Говорят, что ассемблер трудно выучить. Любой язык программирования трудно выучить. Легко выучить С или Delphi после Паскаля, потому что они похожи. А попробуйте освоить Lisp, Forth или Prolog, и окажется, что ассемблер в действительности даже проще, чем любой совершенно незнакомый язык программирования.
Говорят, что программы на ассемблере трудно понять. Разумеется, на ассемблере легко написать неудобочитаемую программу... точно так же, как и на любом другом языке! Если вы знаете язык и если автор программы не старался ее запутать, то понять программу будет не сложнее, чем если бы она была написана на Бейсике.

Введение
Первый вопрос, который задает себе человек, впервые услышавший об этом языке программирования, а зачем он, собственно, нужен? Особенно теперь, когда все пишут на C/C++, Delphi или других языках высокого уровня? Ведь очень многое можно создать на С, но ни один язык, даже такой популярный, не может претендовать на то, чтобы на нем можно было написать действительно все.

Что потребуется для работы с ассемблером
Прежде всего вам потребуется ассемблер. Здесь самое время сказать, что на самом деле язык программирования, которым мы собираемся заниматься, называется язык ассемблера (assembly language). Ассемблер это программа, которая переводит текст с языка, понятного человеку, в язык, понятный процессору, то есть говорят, что она переводит язык ассемблера в машинный код. Однако сначала в повседневной речи, а затем и в литературе слово ассемблер стало также и названием самого языка программирования.

Представление данных в компьютерах
Двоичная система счисления
Биты, байты и слова
Шестнадцатеричная система счисления
Числа со знаком
Логические операции
Коды символов

Процессоры Intel в реальном режиме
Процессор Intelx86 после включения питания оказывается в так называемом режиме реальной адресации памяти, или просто реальном режиме. Большинство операционных систем сразу же переводят его в защищенный режим, позволяющий им обеспечивать многозадачность, распределение памяти и другие функции. Пользовательские программы в таких операционных системах часто работают еще в одном режиме, режиме V86, из которого им доступно все то же, что и из реального, кроме команд, относящихся к управлению защищенным режимом.

Регистры процессора
Регистры общего назначения
Сегментные регистры
Стек
Регистр флагов
Способы адресации
Регистровая адресация
Непосредственная адресация
Прямая адресация
Косвенная адресация

Директивы и операторы ассемблера
Каждая программа на языке ассемблера помимо команд процессора содержит еще и специальные инструкции, указывающие самому ассемблеру, как организовывать различные секции программы, где располагаются данные, а где команды, позволяющие создавать макроопределения, выбирать тип используемого процессора, организовывать связи между процедурами и т.д. К сожалению, пока нет единого стандарта на эти команды

Структура программы
Псевдокоманды определения переменных
Структуры
Сегменты
Модели памяти и определение сегментов
Порядок загрузки сегментов
Процедуры

Основы программирования для MS-DOS
Программа, написанная на ассемблере, так же как и программа, написанная на любом другом языке программирования, выполняется не сама по себе, а при помощи операционной системы. Операционная система выделяет области памяти для программы, загружает ее, передает ей управление и обеспечивает взаимодействие программы с устройствами ввода-вывода, файловыми системами и другими программами (разумеется, кроме тех случаев, когда эта программа сама является операционной системой или ее частью).

Программа типа СОМ
Программа типа ЕХЕ
Средства DOS
Средства BIOS
Прямая работа с видеопамятью

Более сложные приемы программирования
Все примеры программ из предыдущей главы в первую очередь предназначались для демонстрации работы с теми или иными основными устройствами компьютера при помощи средств, предоставляемых DOS и BIOS. В этой главе рассказано о том, что и в области собственно программирования ассемблер позволяет больше, чем любой другой язык, и рассмотрены те задачи, решая которые, принято использовать язык ассемблера при программировании для DOS.

Структуры IF.. THEN... ELSE
Структуры CASE
Конечные автоматы
Циклы
Процедуры и функции
Передача параметров
Передача параметров по значению
Передача параметров по ссылке
Передача параметров по возвращаемому
Передача параметров по результату

Блочные устройства
Для всех остальных команд в поле буфера запроса со смещением +1 размещается номер логического устройства из числа обслуживаемых драйвером, к которому относится команда: 01h:Проверка носителя

Программирование в защищенном режиме
Все, о чем рассказано до этой главы, рассчитано на работу под управлением DOS в реальном режиме процессора (или в режиме V86), унаследованном еще с семидесятых годов. В этом режиме процессор неспособен адресоваться к памяти выше границы первого мегабайта. Кроме того, из-за того, что для адресации используются 16-битные смещения, невозможно работать с массивами больше 65536 байт.

Адресация в защищенном режиме
Интерфейс VCPI
Интерфейс DPMI
Переключение в защищенный режим
Функции DPMI управления дескрипторами

Программирование для Windows 95 и Windows NT
Несмотря на то что Windows95 и WindowsNT кажутся более сложными операционными системам по сравнению с DOS, программировать для них на ассемблере намного проще. С одной стороны, Windows-приложение запускается в 32-битном режиме (мы не рассматриваем Windows3.11 и более старые версии, которые работали в 16-битном режиме) с моделью памяти flat, так что программист получает все те преимущества, о которых говорилось в предыдущей главе, а с другой стороны нам больше не нужно изучать в деталях, как программировать различные устройства компьютера на низком уровне.

Первая программа
Консольные приложения
Окно типа MessageBox
Окна

Ассемблер и языки высокого уровня
В предыдущем разделе, занимаясь программированием для Windows, мы уже обращались к процедурам, написанным на языке высокого уровня из программ на ассемблере, и создавали процедуры на ассемблере, к которым можно обращаться из языков высокого уровня. Для этого нужно было соблюдать определенные договоренности о передаче параметров параметры помещались в стек справа налево, результат возвращался в ЕАХ, стек освобождался от переданных параметров самой процедурой. Эта договоренность, известная как STDCALL, конечно, не единственная, и разные языки высокого уровня используют разнообразные способы передачи параметров.

Передача параметров
Конвенция Pascal
Конвенция С
Смешанные конвенции
Искажение имен
Встроенный ассемблер
Встроенный ассемблер в Pascal
Встроенный ассемблер в С

Оптимизация
Наиболее популярным применением ассемблера обычно считается именно оптимизация программ, то есть уменьшение времени выполнения программ по сравнению с языками высокого уровня. Но если просто переписать текст, например с языка С на ассемблер, переводя каждую команду наиболее очевидным способом, часто оказывается, что С-процедура выполнялась быстрее. Вообще говоря, ассемблер, как и любой другой язык, сам по себе не является панацеей от неэффективного программирования чтобы действительно оптимизировать программу, требуется не только знание команд процессора, но и знание алгоритмов, навык оптимальных способов их реализации и подробная информация об архитектуре процессора.

Высокоуровневая оптимизация
Оптимизация на среднем уровне
Вычисление констант вне цикла
Перенос проверки условия в конец цикла
Выполнение цикла задом наперед
Разворачивание циклов
Общие принципы низкоуровневой оптимизации
Основные рекомендации
Команда LEA
Выравнивание

Процессоры Intel в защищенном режиме
Дело в том, что управление защищенным режимом в современных процессорах Intel это самый сложный раздел программирования и самая сложная глава в этой книге. Но материал можно легко освоить, если рассматривать этот раздел шаг за шагом отдельные механизмы работы процессора достаточно мало перекрываются друг с другом. Прежде чем рассматривать собственно программирование, познакомимся с регистрами и командами процессора, которые пока были от нас скрыты.

Регистры
Системные флаги
Регистры управления памятью
Регистры управления процессором
Отладочные регистры
Машинно-специфичные регистры
Системные и привилегированные команды

Программирование на ассемблере в среде UNIX
Операционная система MS-DOS, получившая дальнейшее развитие в виде Windows, долгое время была практически единственной операционной системой для персональных компьютеров на базе процессоров Intel. Но с течением времени мощность процессоров выросла настолько, что для них стало возможным работать под управлением операционных систем класса UNIX, использовавшихся обычно на более мощных компьютерах других компаний. В настоящее время существует более двадцати операционных систем для Intel, представляющих те или иные диалекты UNIX. Мы рассмотрим наиболее популярные из них.

Синтаксис AT&T
Основные правила
Запись команд
Адресация
Операторы ассемблера
Префиксные, или унарные операторы
Инфиксные, или бинарные операторы
Директивы ассемблера
Директивы определения данных
Директивы управления символами

Заключение
Итак, прочитав эту книгу, вы познакомились с программированием на языке ассемблера во всей широте его проявлений от создания простых программ и процедур, вызываемых из программ на других языках, до драйверов устройств и операционных систем. Теперь должно быть очевидно, что ассемблер не только не сдает свои позиции, но и не может их сдать ассемблер неотъемлемо связан с компьютером, и всюду, как только мы опускаемся с уровня абстракций языков высокого уровня, рано или поздно встречаемся с ним.

Символы ASCII
Номера строк соответствуют первой цифре в шестнадцатеричном коде символа, номера столбцов второй, так что, например, код большой латинской буквы A 41h

Управляющие символы ASCII
Кодировки второй половины ASCII
Коды символов расширенного ASCII
Скан-коды клавиатуры
Команды INTEL 80x86
Общий формат команды процессора Intel
Значения полей кода команды
Значения поля ModRM
Значения поля SIB
Общая информация о скоростях выполнения

Ассемблирование без секретов

Свою программистскую карьеру мыщъх начинал с микрокомпьютера "Правец-8D", оснащенного довольно экзотической версией Бейсика и нехилым руководством с кучей конкретных примеров (правда, на болгарском языке). Процесс освоения буржуинской техники происходил приблизительно так. Набрал программу. Запустил. Помедитировал над листингом. Попробовал что-нибудь изменить. Запустил. Посмотрел на реакцию. Осмыслил. Что-то еще изменил. И вот так, шаг за шагом мыщъх разобрался во всех операторах языка и научился писать эффективные программы, в которых нет ничего лишнего.

Введение или много лет тому назад
Лицо асматика в ASCII
Блокнот с записями начинающего асматика
Зоопарк ассемблеров
Определение целевой платформы
Метод ассемблерных вставок
Классический пример
Законченная программа anti-debug.c
Anti-debug.exe без отладчика

Дизассемблирования под LINUX

Главной особенностью дизассемблирования под LINUX является полное отсутствие достойных дизассемблеров (кроме IDA PRO, конечно) и другого инструментария. Поэтому, даже простая защита ставит хакеров в тупик. На самом деле это не тупик, а хитро замаскированный лаз, ведущий в хату чувака Кролика. Ну, а там где есть Кролик, обязательно найдется и мыщъх (по-испански raton), показывающий как эту штуку взломать.

Особенности дизассемблирования под LINUX на примере tiny-crackme

Использование ассемблера в Дельфи

Вы любите Дельфи? Я да! Мое имя Гуйдо Гайбелс, и многие годы использую Borland Delphi и искренне верю, что это лучший инструмент на рынке RAD инструментов. Дельфи не только обладает мощью, но также надежностью и высокой скоростью. Язык программирования Object Pascal изумительный, а компилятор просто фантастический.

Где размещать ассемблерный код
Код входа/выхода и сохранение регистров
Передача информации через регистр
Передача информации через стек
Локальные переменные
Возврат информации через регистры процессора
Возврат информации через стек процессора
Возврат информации через стек сопроцессора
Передача параметров по зничению и ссылке
Замечания о синтаксисе

Создание VxD на Visual C++ без ассемблерных модулей

Виртуальные драйверы устройств (VxD) в Windows во многих случаях являются единственным «честным» способом обхода ограничений, установленных системой для приложений Win32: невозможности прямого доступа к портам ввода-вывода и служебной памяти, эффективной обработки аппаратных прерываний, использования сервисных функций существующих VxD и т.п. Кроме того, без VxD не обходится практически ни один полноценный драйвер физического или виртуального устройства.

Смысл и назначение драйвера
Имя и идентификатор драйвера
Статические и динамические драйверы
Порядок загрузки статических драйверов
Системные сообщения драйверу
Сервисные функции драйвера
Интерфейс с прикладными программами
Структура и функционирование драйвера
Секции файла драйвера
Блок описателя драйвера

Turbo Assembler 3.0. Руководство пользователя

Турбо Ассемблер работает на компьютерах семейства IBM PC, включая модели XT, AT и PS/2, а также на полностью совместимых с ними компьютерах. Для работы Турбо Ассемблера требуется операци- онная система MS-DOS (версии 2.0 или более поздняя) и не менее 256К оперативной памяти.
Турбо Ассемблер генерирует инструкции процессоров 8086, 80186, 80286, 80386 и i486, а также инструкции с плавающей точкой для арифметических сопроцессоров 8087, 80287 и 80387. (Подробнее об инструкциях процессором семейства 80х86/80х87 рассказывается в книгах фирмы Intel.)

Требования к программному и аппаратному обеспечению
Турбо Ассемблер фирмы Borland представляет собой многопро- ходный ассемблер с разрешением опережающих ссылок, скоростью ас- семблирования до 48000 строк в минуту (на компьютере IBM PS/2, модель 60), совместимый с макроассемблером фирмы Microsoft MASM и дополнительной возможностью использования режима расширенного синтаксиса Ideal. Независимо от вашего опыта в программировании вы, несомненно, оцените эти особенности, а также ряд других средств, которые значительно облегчают программирование на Ас- семблере.

Поддержка DPMI
О данной документации
Руководство пользователя
Соглашения по обозначениям
Как обратиться за помощью к фирме Borland
Ресурсы вашего пакета
Возможности фирмы Borland
Начало работы на Турбо Ассемблере
Установка Турбо Ассемблера в системе

Директивы выбора процессора и идентификаторы процессора
Математические сопроцессоры, такие как 8087, 80287 и 80387, работающие с процессорами семейства iAPx86, позволяют выполнять операции с плавающей точкой.
В Турбо Ассемблере предусмотрены директивы и предопределен- ные идентификаторы, которые позволяют вам использовать инструкции конкретного процессора. Эти директивы и идентификаторы описывают- ся в данной главе.

Директивы процессоров iAPx86
Идентификатор @Cpu
Идентификатор @WordSize
Директивы сопроцессора 8087
Директивы эмуляции сопроцессора
Использование моделей памяти программы и сегментации
Директива MODEL

Использование условных директив
Существует два класса условных директив: директивы условного ассемблирования и условные директивы генерации сообщений об ошибке. С помощью директив условного ассемблирования вы можете управлять тем, какой код будет ассемблироваться в программе при опре- деленных условиях.
Директивы условного ассемблирования позволяют вам генерировать во время ассемблирования сообщения об ошибках при наступлении определенных событий. Турбо Ассемблер выводит сообщение об ошибке на экран и в файл листинга и предотвращает создание объектного файла. В данной главе описывается, как можно использовать имеющиеся условные директивы.

Синтаксис условных директив
Директива условного ассемблирования IFxxx
Директивы условного ассемблирования ELSEIFxxx
Директивы генерации сообщений ERRxx
Безусловные сообщения об ошибке
Условные директивы с выражениями
Условные директивы с идентификатором
Условные директивы с текстовыми строками

Информационные сообщения
При возникновении фатальных ошибок Турбо Ассемблер выдает соответствующее сообщение и ассемблирование пользовательского файла немедленно прекращается, независимо от того чем была вызвана эта ошибка. В этом разделе приводится перечень возможных сообщений о фатальных ошибках.

Code or data emission to undeclared segment
Constant assumed to mean Immediate const
Constant too large
CS not correctly assumed
CS override in protected mode
CS unreachable from current segment
Declaration needs name
Directive ignored in Turbo Pascal model
Directive not allowed inside structure definition
Duplicate dummy arguments:_

Assembler - начало пути

Почему вас могло бы заинтересовать программирование на языке ассемблера? Cегодня повсюду используются такие языки высокого уровня как Бэйсик, Фортран и Паскаль. Возможно, вы уже знакомы по крайней мере с одним языком высокого уровня. Если вы постоянно пользуютесь персональным компьютером IBM, то вы знаете, что интерпритатор Бэйсика является частью системы. Зачем же возиться еще с одним языком программирования, тем более с таким, который сулит определенные трудности? Очевидно, даже располагая современными могучими языками, вы все еще нуждаетесь в ассемблере из-за его эффективности и точности.

Программирование на языке Ассемблера
Двоичная арифметика
Модель программирования 8088
Команды управления микропроцессором
Дисковая операционная система
Макроопределения
Работа 8087
Системное оборудование
Замечания по листингу ROM BIOS
Расширение системы BIOS
Заключение

Справочник по языку Ассемблера IBM PC

Интересно проследить, начиная со времени появления первых компьютеров и заканчивая сегодняшним днем, за трансформациями представлений о языке ассемблера у программистов.
Когда-то ассемблер был языком, без знания которого нельзя было заставить компьютер сделать что-либо полезное. Постепенно ситуация менялась. Появлялись более удобные средства общения с компьютером. Но, в отличие от других языков, ассемблер не умирал, более того он не мог сделать этого в принципе. Почему? В поисках ответа попытаемся понять, что такое язык ассемблера вообще.
Если коротко, то язык ассемблера — это символическое представление машинного языка.
Все процессы в машине на самом низком, аппаратном уровне приводятся в действие только командами (инструкциями) машинного языка. Отсюда понятно, что, несмотря на общее название, язык ассемблера для каждого типа компьютера свой. Это касается и внешнего вида программ, написанных на ассемблере, и идей, отражением которых этот язык является.

Об ассемблере
Программист или любой другой пользователь может использовать любые высокоуровневые средства, вплоть до программ построения виртуальных миров и, возможно, даже не подозревать, что на самом деле компьютер выполняет не команды языка, на котором написана его программа, а их трансформированное представление в форме скучной и унылой последовательности команд совсем другого языка — машинного. А теперь представим, что у такого пользователя возникла нестандартная проблема или просто что-то не заладилось.

Author
Микропроцессоров Intel
Порядок описания команд будет следующим:
Для описания команд приняты обозначения:
AAA
AAD
AAM
AAS
ADC

Директивы управления листингом
Директивы управления листингом делятся на следующие группы: При рассмотрении директив обращайте внимание на то, что их формат отличается для режимов работы транслятора MASM и IDEAL: директивам режима MASM предшествует точка; директивам режима IDEAL предшествует знак “%”.

Общие директивы управления листингом
Директивы вывода текста включаемых файлов
Директивы вывода условного ассемблирования
Директивы вывода макрорасширений
Директивы вывода листинга перекрестных ссылок
Директивы изменения формата листинга
Сообщения об ошибках

Структура машинной команды
Префиксы. Необязательные элементы машинной команды, каждый из которых состоит из одного байта или может отсутствовать. В памяти префиксы предшествуют команде. Назначение префиксов — модифицировать операцию, выполняемую командой.

Структура машинной команды
Способы задания операндов команды
Прямая адресация
Косвенная базовая (регистровая) адресация

Команды пересылки данных
Для удобства практического применения и отражения их специфики команды данной группы удобнее рассматривать в соответствии с их функциональным назначением, согласно которому их можно разбить на следующие группы команд

Команды пересылки данных
Команды ввода-вывода в порт
Команды работы с адресами
Команды преобразования данных
Команды работы со стеком

Обзор группы арифметических команд и данных
Группа арифметических целочисленных команд работает с двумя типами чисел: целыми двоичными числами. Числа могут иметь знаковый разряд или не иметь такового, то есть быть числами со знаком или без знака; целыми десятичными числами.

Целые двоичные числа
Десятичные числа
Арифметические операции над двоичными
Сложение двоичных чисел без знака
Сложение двоичных чисел со знаком
Пример 1.
Пример 2.
Пример 3.

Логические команды
Наряду со средствами арифметических вычислений, система команд микропроцессора имеет также средства логического преобразования данных. Под логическими понимаются такие преобразования данных, в основе которых лежат правила формальной логики. Формальная логика работает на уровне утверждений истинно и ложно. Для микропроцессора это, как правило, означает /b> и /b> соответственно.

Логические команды
Логические данные
Логические команды
Команды сдвига
Команды линейного сдвига

Команды передачи управления
На предыдущих уроках мы познакомились с некоторыми командами, из которых формируются линейные участки программы. Каждая из них в общем случае выполняет некоторые действия по преобразованию или пересылке данных, после чего микропроцессор передает управление следующей команде. Но очень мало программ работают таким последовательным образом. Обычно в программе есть точки, в которых нужно принять решение о том, какая команда будет выполняться следующей

Безусловные переходы
Команда безусловного перехода jmp
Процедуры
Условные переходы
Команда сравнения cmp
Команды условного перехода и флаги
Команды условного перехода и регистр ecx/cx
Организация циклов

Цепочечные команды
Эти команды также называют командами обработки строк символов. Названия почти синонимичны. Отличие в том, что под строкой символов здесь понимается последовательность байт, а цепочка — это более общее название для случаев, когда элементы последовательности имеют размер больше байта — слово или двойное слово.

Цепочечные команды
Операция пересылки цепочек
Команда movs:
Операция сравнения цепочек
Команда cmps

Сборник по задачам и примерам Assembler

Профессия программиста удивительна и уникальна. Давно уже настало время настоящего философского осмысления этой сферы человеческой деятельности, действительно обладающей какими-то особенными, для людей непосвященных чуть ли не магическими, свойствами. Если не брать в рассмотрение коммерческую сторону, то можно сказать, что чужих людей в этой области профессиональной деятельности нет. В чем же ее особенность? Наиболее точно по этому поводу высказался Фредерик Брукс в главе «Пятьдесят лет удивления, восхищения и радости» своей книги «Мифический человеко-месяц, или как создаются программные системы>: «Немногим Бог дает право зарабатывать на жизнь тем, чем они с радостью занимались бы по собственной воле, по увлечению. Я благодарен судьбе». И далее: «Область связанных с компьютерами знаний претерпела взрыв, как и соответстующая технология. Будучи аспирантом в середине 50-х, я мог прочесть все журналы и труды конференций. Я мог оставаться на современном уровне во всей научной дисциплине.

Введение
Эту книгу можно рассматривать как своеобразную форму программного продукта. Даже беглое ее пролистывание показывает, как много в ней программного кода. Более того, так как ассемблерный код неэк'ономичен с точки зрения использования поверхности листа бумаги для его записи, то в тексте книги приведены лишь значимые для каждого конкретного контекста изложения фрагменты программ. Полные тексты этих программ содержатся на дискете. Некоторые наиболее объемные по размеру исходного текста программы целиком вынесены на дискету без приведения их фрагментов в тексте книги. Для эффективной работы с ними читателю следует внимательно следить за ссылками на них и соответствующими пояснениями.

Программирование целочисленных арифметических операций
Всякое математическое доказательство, за которым мы можем следить, выразимо конечным числом символов. Эти символы, правда, могут быть связаны с понятием бесконечности, но связь эта такова, что ее можно установить за конечное число шагов. Так, когда в случае математической индукции мы доказываем теорему, зависящую от параметра n, мы доказываем ее сначала для n=0 и затем устанавливаем, что случай, когда параметр имеет значение n+1, вытекает из случая, когда параметр имеет значение n.

Двоичные числа
Сложение чисел размером 1 байт без учета знака
Сложение чисел размером N байт без учета знака
Сложение чисел размером 1 байт с учетом знака
Сложение с учетом знака чисел размером N байт
Вычисление дополнения числа размером N байт
Вычисление модуля числа размером N байт
Вычитание двоичных чисел
Вычитание чисел размером N байт без знака
Вычитание чисел размером 1 байт с учетом знака

Сложные структуры данных
Процесс разработки программы на ассемблере традиционно осложняется тем, что в этом языке ограничены средства описания данных, привычные для языков программирования высокого уровня. В уроке 12 «Сложные структуры данных» учебника были рассмотрены средства, которые поддерживает ассемблер для работы с данными. Но это деление весьма условно и не дает представления о том, как реализуется общая концепция понятий «данное», «тип данных» и «структура данных» в контексте программирования на языке ассемблера.

Основные понятия
Способы распределения памяти
Механизм виртуальной памяти Windows
Механизм работы с кучами Windows
Множество

Процедуры в программах ассемблера
В учебнике достаточно полно был рассмотрен вопрос организации работы с процедурами, но некоторые проблемы остались за кадром. В этой главе мы остановимся на трех из них: реализации рекурсивных и вложенных процедур на ассемблере, а также разработке динамических (DLL) библиотек.

Реализация рекурсивных процедур
Реализация вложенных процедур
Разработка динамических (DLL) библиотек
Разработка текста DLL-библиотеки

Обработка цепочек элементов
Материал этой главы является дополнением к уроку 11 «Цепочечные команды» учебника. Из этого урока следуют выводы о том, что, во-первых, цепочечные команды являются мощным инструментом обработки последовательностей элементов размером 1/2/4 байт и, во-вторых, это единственное средство микропроцессора для обработки данных по схеме память-память. В процессе разработки программ для учебника и этой книги мы достаточно часто использовали команды микропроцессора этой группы.

Обработка цепочек элементов
Прямой поиск в текстовой строке
Поиск с анализом искомой подстроки

Работа с консолью в программах на ассемблере
На практике редко возникает необходимость разработки программы как «вещи в себе». В подавляющем большинстве случаев программа должна взаимодействовать с пользователем, получая от него данные посредством клавиатуры и выдавая результаты своей работы на экран. При знакомстве с новым языком программирования одним из первых вопросов, на которые ищет ответа программист, является выяснение средств этого языка для выполнения операций обмена с консолью (консоль — клавиатура и монитор). Что касается языка ассемблера, то собственных средств обмена с консолью у него нет.

Функции BIOS для работы с консолью
Функции BIOS для работы с клавиатурой
Проверка наличия символа
Получение состояния флагов клавиатуры
Запись символа в буфер клавиатуры
Функции BIOS для работы с экраном
Установка видеорежима
Установка позиции курсора
Получение позиции курсора
Запись символа и его атрибута в видеопамять

Преобразование чисел
Отдельный предмет обсуждения при этом — процесс ввода-вывода числовой информации. В каждом языке программирования он реализован по-своему. Одна из целей, к которой стремятся разработчики компиляторов, — по возможности сделать этот процесс прозрачным для программиста. Язык ассемблера в отличие от языков высокого уровня не обладает средствами такого прозрачного ввода-вывода числовой информации. Но в этом и состоит его достоинство, так как при определенном опыте и квалификации программиста появляется хорошая возможность повышения эффективности конечного кода.

Ввод чисел с консоли
Ввод целых десятичных чисел 0..99
Ввод целых десятичных чисел 0..999 999
Ввод целых десятичных 0..до бесконечности
Ввод вещественных чисел
Вывод чисел на консоль

Работа с файлами в программах на ассемблере
Язык ассемблера не содержит средств для работы с файлами. Если такая необходимость возникает, то программа должна содержать фрагменты кода, в которых производится обращение к средствам операционной системы, осуществляющим взаимодействие с файловой системой. Это лишний раз подтверждает тот факт, что в области взаимодействия с внешним миром программа на ассемблере оказывается привязанной как к конкретной аппаратной, так и конкретной операционной платформам. В сегодняшней ситуации программисту все еще приходится сталкиваться с необходимостью программирования для MS DOS.

Создание, открытие, закрытие и удаление файла
Создание файла с усечением существующего
Открытие файла с расширенными возможностями
Закрытие файла
Чтение, запись, позиционирование в файле
Установка текущей файловой позиции
Запись в файл или устройство

Профайлер
В этой главе мы рассмотрим проблему измерения скоросгн работы программ. Интерес к данной теме у программистов всегда повышен и подобен интересу рыболовов к размерам выловленной рыбы. Когда программист разрабатывает алгоритм реализации некоторой задачи, то он обязательно пытается оценить скорость, с которой будет работать программа по этому алгоритму. Б процессе изложения материала мы уже не раз предлагали для решения одной задачи несколько способов, но при этом оставляли открытым вопрос об оценке их эффективности.

Профайлер
Расширение традиционной архитектуры Intel
Команды RDMSR и WRMSR
CPUID — информация о текущем процессоре
Счетчик меток реального времени TSC

Вычисление CRC
В своей практической работе каждый пользователь наверняка сталкивался с ситуацией, когда неблагоприятные условия перемещения файлов (любым способом) приводили к порче последних. Типичное проявление этой ситуации — сообщение об ошибке при попытке чтения некоторого файла. Причина — внесенная извне техническая ошибка, приведшая к нарушению целостности исходной информации. Существует много методов для исправления подобных ошибок, но прежде чем исправлять, необходимо эти ошибки обнаружить

Вычисление CRC
CRC-арифметика

Программирование ХММ-расширения
В этой главе мы рассмотрим практические вопросы программирования ХММ-расширения микропроцессора Pentium III. Программирование целочисленного MMX-расширения рассмотрено в уроке 20 «ММХ-технология микропроцессоров Intel» учебника. Там же рассмотрены архитектура и система команд ХММ-расширения, но остались «за бортом» вопросы организации практической работы с ними. Кроме учебника архитектура и система команд ХММ-расширения рассмотрены в литературе.

Программирование ХММ-расширения
Программирование ХММ-расширения
Описание упакованных и скалярных данных
Примеры использования команд ХММ-расширения
Сложение и умножение ХММ-значений
Умножение матрицы на вектор
Умножение матрицы 4x4 на вектор

Ассемблер и программирование для IBM PC

Написание ассемблерных программ требует знаний организа ции всей системы компьютера. В основе компьютера лежат понятия бита и байта. Они являются тем средством, благодаря которым в компьютерной памяти представлены данные и команды. Программа в машинном коде состоит из различных сигментов для определения данных, для машинных команд и для сигмента, названного стеком, для хранения адресов. Для выполнения ариф метических действий, пересылки данных и адресации компьютер имеет ряд регистров. Данная глава содержит весь необходимый материал по этим элэментам компьютера, так что вы сможете продвинутся к главе 2 к вашей первой программе на машинном языке.

Введение в семейство персональных компьютеров IBM PC
Дисковая память II: Функции базовой версиии DOS

Справка по Ассемблеру

Win32-пpогpаммы выполняются в защищенном pежиме, котоpый доступен начиная с 80286. Hо 80286 тепеpь истоpия. Поэтому мы пpедполагаем, что имеем дело только с 80386 и его потомками. Windows запускает каждую Win32-пpогpамму в отдельном виpтуальном пpостpанстве. Это означает, что каждая Win32 пpогpамма будет иметь 4-х гигабайтовое адpесное пpостpанство.
Hо это вовсе не означает, что каждая пpогpамма имеет 4 гигабайта физической памяти, а только то, что пpогpамма может обpащаться по любому адpесу в этих пpеделах. Windows сделает все необходимое, чтобы сделать память, к котоpой обpащается пpогpамма, "существующей". Конечно, пpогpамма должна пpидеpживаться установленных пpавил, иначе Windows вызовет General Protection Fault. Каждая пpогpамма одна в своем адpесном пpостpанстве, в то вpемя как в Win16 дело обстоит не так. Все Win16-пpогpаммы могут "видеть" дpуг дpуга, что невозможно в Win32. Этот особенность помогает снизить шанс того, что одна пpогpамма запишет что-нибудь повеpх данных или кода дpугой пpогpаммы.

Вступление
Windows API
Создание гpафического интеpфейса
В этом уpоке мы научимся создавать меню
Текст в Windows
Цветовая система Windows
Ввод с клавиатуpы
Ассемблирование программ
Ошибки при ассемблировании программы

Как написать игру для ZX Spectrum на ассемблере

Эта книга адресована в первую очередь тем, кого уже перестал удовлетворять несколько ограниченный и неповоротливый Бейсик и кто мечтает наконец научиться писать программы на ассемблере. Книга рассчитана на достаточно подготовленного читателя, прошедшего «боевое крещение» Бейсиком, а новичкам в программировании мы можем порекомендовать первую книгу из серии «Как написать игру для ZX Spectrum». Надеемся также, что и профессионалы смогут найти здесь для себя некоторые зерна истины.
Как и в предшествующей книге, речь здесь пойдет преимущественно об игровых программах, однако хотим вас предупредить заранее, что ассемблер - штука серьезная и нам не раз придется погружаться в пучины мудреных понятий и терминов. Но со своей стороны мы обещаем сделать эти погружения не слишком головокружительными, смягчив суровую необходимость занимательными примерами.
Возможно, вас несколько смутили только что прочитанные строки, да и раньше вам, быть может, не раз приходилось слышать, мол, писать программы на ассемблере невероятно сложно. Но, право, не так страшен ассемблер, как его малюют, а что касается сложностей, так вспомните свои первые шаги в том же Бейсике.

Загрузочная картинка к игре JUGGERNAUT
Часто только это изображение и называют заставкой, хотя на самом деле это лишь первая ее часть, помогающая игроку морально подготовиться к тяготам предстоящего сражения или лишениям, связанным с поисками сокровищ. Однако в солидных игровых программах заставка чаще всего разбивается на несколько частей, именуемых кадрами. Объясняется это очень просто: перед началом игры на экране должно появиться столь большое количество информации, что впихнуть ее в один кадр практически невозможно.

Меню программы EAGLES NEST
Игровое пространство
Игровое пространство программы DIZZY4
Взаимодействие с играющим
Оценка игровой ситуации
Оценка игровой ситуации в игре GUN FRIGHT
Звуковое сопровождение игры
Машинные коды и ассемблер

Спрайт из игры FIST
Рассмотрим пример вывода спрайта произвольной конфигурации (7.1). Не правда ли, многие узнали в нем одного из персонажей игры FIST. Все дело в том, что этот спрайт как нельзя лучше демонстрирует эффективность предложенной нами процедуры PTBL, поскольку его форма заметно отличается от прямоугольной. Управляющая часть программы получилась довольно короткой

Спрайт-генератор
Мультипликация

Учебник по Assembler

Микропроцессоры корпорации Intel и персональные компьютеры на их базе прошли не очень длинный во времени, но значительный по существу путь развития, на протяжении которого кардинально изменялись и возможности и даже сами принципы их архитектуры. В то же время, внос в микропроцессор принципиальные изменения, разработчики были вынуждены постоянно иметь в виду необходимость обеспечения совмести мости новых моделей со старыми, чтобы не отпугивать потенциального покупателя перспективой полной замены освоенного или разработанного им программного обеспечения. В результате современные микропроцессоры типа Pentium, обеспечивая такие возможности, как 32-битную адресацию почти неограниченных объемов памяти, многозадачный режим с одновременным выполнением нескольких программ, аппаратных средства защиты операционной системы и прикладных программ друг друга, богатый набор дополнительных эффективных команд и способе адресации, в то же время могут работать (и часто работают) в режиме первых микропроцессоров типа 8086, используя всего лишь 1 мегабайт оперативной памяти, 16-разрядные операнды (т. е. числа в диапазоне до 216 - 1 = 65535) и ограниченный состав команд. Поскольку программирование на языке ассемблера напрямую затрагивает аппаратные возможности микропроцессора, прежде всего следует выяснить, в какой степени программист может использовать новые возможности микропроцессоров в своих программах и какие проблемы программной несовместимости могут при этом возникнуть.

Введение
Реальный и защищенный режимы прежде всего принципиально различаются способом обращения к оперативной памяти компьютера. Метод адресации памяти, используемый в реальном режиме, позволяет адресовать память лишь в пределах 1 Мбайт; в защищенном режиме используется другой механизм (из-за чего, в частности, эти режимы и оказались полностью несовместимыми), позволяющий обращаться к памяти объемом до 4 Гбайт.

Распределение адресного пространства
При обсуждении содержимого многобайтового данного приходится ссылаться на составляющие его байты; эти байты условно нумеруются от нуля и располагаются (при их изображении на бумаге) в порядке возрастания номера справа налево, так что слева оказываются байты с большими номерами, а справа - байты с меньшими номерами. Крайний слева байт принято называть старшим, а крайний справа - младшим. Такой порядок расположения байтов связан с привычной для нас формой записи чисел: в многоразрядном числе слева указываются старшие разряды, а справа - младшие

Взаимодействие оперативной
Распределение адресного пространства
Регистры процессора

Процесс подготовки и отладки программы
Рассматривая листинг, можно отметить ряд полезных моментов общего характера. Предложения программы с операторами assume, segment, ends, end, как уже отмечалось ранее, не транслируются в какие-либо машинные коды и не находят отражения в памяти. Они нужны лишь для передачи транслятору служебной информации о способе трансляции команд (assume), границах сегментов (segment и end) и строке, на которой следует завершить обработку исходного текста (end).

Процесс подготовки и отладки программы
Представление данных

Организация приложений MS-DOS
Как уже отмечалось выше, язык ассемблера является отражением архитектуры процессора, и изучение языка в сущности означает изучение системы команд и способов адресации, реализуемых процессором. Одна ко любой язык программирования полезен лишь постольку, поскольку на нем можно написать какие-то работоспособные программы. В то же время трудно представить себе реальную программу, которая выполняет чисто логические или вычислительные действия, ничего не вводя и не выводя и не взаимодействуя с другими программами. Однако такие вопросы, как организация выполнимой программы, ее запуск, взаимодействие с разнообразными аппаратными и программными объектами вычислительной системы (клавиатурой, дисками, таймером, памятью, системными драй верами и проч.) и, наконец, завершение являются прерогативой операционной системы.

Архитектурные особенности
Операционная система MS-DOS, язык ассемблера МП 86 и методы программирования микропроцессоров корпорации Intel разрабатывались применительно к 16-разрядному процессору 8086 и тому режиму, который впоследствии получил название реального. Появление процессора 80386 знаменовало собой начато нового этапа в развитии операционных систем и прикладного программирования - этапа многозадачных графических операционных систем защищенного режима типа Windows и 32-разрядных прикладных программ. При этом, как уже отмечалось во введении, все архитектурные средства 86-го процессора входят в состав любого современного процессора, который, таким образом, можно условно разделить на две части - МП 86 и дополнительные средства, обеспечивающие защищенный режим, 32-разрядную адресацию и прочее.

Система команд процессоров Intel
В разделах статей, начинающихся с обозначения 386+, описываются отличия действия рассматриваемой команды в современных 32-разрядных процессорах (80386, i486, Pentium). Как правило, эти отличия заключаются в возможности использования не только 8- и 16-разрядных, но и 32-разрядных операндов, а также расширенных режимов адресации памяти. Обычные 16-разрядные программы реального режима вполне могут использовать расширенные регистры процессора (ЕАХ, ЕВХ и проч.), 32-битовые ячейки памяти и варианты команд для их обработки.

Команды предназначены для ввода
INT Программное прерывание
MP Безусловный переход
LEAVE Выход из процедуры высокого уровня
Регистр таблицы дескрипторов

Статьи по Assembler

Минимальное приложение имеет множество достоинств: очень быстро пишется, занимает минимум ресурсов, не требует сопровождения, работает с такой скоростью, что его не видно. Недостаток у него один: оно совершенно никому не нужно. Именно этим оно и интересно настоящему ассемблерщику.

Рунет : win32asm
Mycall (c++)
Ms devstudio - среда разработки asm
Настоящий ли вы ассемблерщик?
Можно ли зарабатывать на жизнь shareware?
О формате pcx

Программирование на Ассемблере

В настоящее время нет языка, полностью удовлетворяющего этим свойствам. Всем требованиям, кроме последнего, удовлетворяет машинный язык и близкий к нему язык Ассемблера. Последнему требованию удовлетворяют языки высокого уровня, но они не удовлетворяют первым трем требованиям, поэтому при создании системных программ используют и язык Ассемблер и язык высокого уровня (язык С, С++). И, хотя для систем, поддерживающих работу с процессорами разных типов, например, WINDOWS NT, драйверы пишутся на языке высокого уровня, значимость ассемблера не падает, так как знание принципов выполнения команд и их хранение в памяти помогает писать «хорошие» программы на любом языке.

Характеристика языков системного программирования
Системное программное обеспечение (СПО)– комплекс программ для увеличения производительности вычислительной системы и пользователя. Примером СПО является операционная система. Компонентом СПО является системная программа.

Структура 4-х адресной команды
Структура 2-х адресной команды
Структура 1 адресной команды.
Структура безадресных команд
Сравнительный анализ команд
Пример программирования в машинных кодах.
Система команд
Распределение памяти
Программа вычисления
Характеристика языков ассемблерного типа

Обработка ошибок с помощью функции GetLastError
Для формирования требуемого сообщения по номеру ошибки, который возвращает функция GetLastError. Для этой функции задается адрес буфер, а функция выделяет буфер в куче и записывает сформированное сообщение; тип формируемого сообщения (для нас – сообщение ОС - FORMAT_MESSAGE_FROM_SYSTEM и язык, принятый по умолчанию – макрос MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT);

Пользовательские функции с обработкой ошибок
Системные вызовы для ввода-вывода
Функции ввода-вывода для устройств
Функция MessageBox
Функции и константы для консоли
Ввод/вывод числовых данных

Создание операционной системы на Ассемблере

В своей работе я буду использовать: Ассемблер nasm, который мне очень нравится из-за своей многоплатформенности (есть версии для UNIX, DOS и Windows), поддержкой команд практически всех современных процессоров и многообразием понимаемых форматов.
На Си мы будем писать не много, и для наших целей подойдет практически любой ANSI C компилятор. (ANSI C - это стандарт Си, дорабатывался последний раз в 1989 году, и практически все компиляторы ему соответствуют).

Выпуск №2
Как процессор работает с памятью?
Страничная организация памяти.
Многозадачность.
Что из всего этого следует?
Для начала разберемся, как устроены системы.
Аппаратные возможности компьютеров.
Теперь немного поподробнее про устройство ядра.
Вопросы к подписчикам
Здравствуйте, уважаемые подписчики.

Cамоучитель по Assembler

Микропроцессоры корпорации Intel и персональные компьютеры на их базе прошли не очень длинный во времени, но значительный по существу путь развития, на протяжении которого кардинально изменялись и возможности и даже сами принципы их архитектуры. В то же время, внос в микропроцессор принципиальные изменения, разработчики были вынуждены постоянно иметь в виду необходимость обеспечения совмести мости новых моделей со старыми, чтобы не отпугивать потенциального покупателя перспективой полной замены освоенного или разработанного им программного обеспечения. В результате современные микропроцессоры типа Pentium, обеспечивая такие возможности, как 32-битную адресацию почти неограниченных объемов памяти, многозадачный режим с одновременным выполнением нескольких программ, аппаратных средства защиты операционной системы и прикладных программ друг друга, богатый набор дополнительных эффективных команд и способе адресации, в то же время могут работать (и часто работают) в режиме первых микропроцессоров типа 8086, используя всего лишь 1 мегабайт оперативной памяти, 16-разрядные операнды (т. е. числа в диапазоне до 216 - 1 = 65535) и ограниченный состав команд. Поскольку программирование на языке ассемблера напрямую затрагивает аппаратные возможности микропроцессора, прежде всего следует выяснить, в какой степени программист может использовать новые возможности микропроцессоров в своих программах и какие проблемы программной несовместимости могут при этом возникнуть.
Первые персональные компьютеры корпорации IBM, появившиеся в 1981 г. и получившие название IBM PC, использовали в качестве центрального вычислительного узла 16-разрядный микропроцессор с 8-разрядной внешней шиной Intel 8088. В дальнейшем в персональных компьютерах стал использоваться и другой вариант микропроцессора, 8086, который отличался от 8088 тем, что являлся полностью 16-разрядным. С тех пор его имя стало нарицательным, и в программах, использующих только возможности процессоров 8088 или 8086, говорят, что они работают в режиме 86-го процессора.
В 1983 г. корпорацией Intel был предложен микропроцессор 80286, в котором был реализован принципиально новый режим работы, получивший название защищенного. Однако процессор 80286 мог работать и в режиме 86-го процессора, который стали называть реальным.

Введение

Архитектура реального режима
Среди устройств и узлов, входящих в состав компьютера, наиболее важными для выполнения любой программы катаются оперативная память и центральный микропроцессор, который мы для краткости будем в дальнейшем называть просто процессором. В оперативной памяти хранится выполняемая программа вместе с принадлежащими ей данными; процессор выполняет вычисления и другие действия, описанные в программе.
Программа загружается в память с жесткого или гибкого магнитного диска, где она хранится, операционной системой в ответ ввод с клавиатуры команды запуска программы. Операционная система, загрузив программу, и при необходимости настроив ее для выполнения в той области памяти, куда она попала, сообщает процессору начальный адрес загруженной программы и инициирует процесс ее выполнения.

Память и процессор
Распределение адресного пространства
Регистры процессора
Сегментная структура программ
Стек
Система прерываний

Основы программирования
Процесс подготовки и отладки программы на языке ассемблера включает этапы подготовки исходного текста, трансляции, компоновки и отладки.
Подготовка исходного текста программы выполняется с помощью любого текстового редактора, хотя бы редактора, встроенного в программу Norton Commander, или еще более удобного редактора Norton Editor. При использовании одного из более совершенных текстовых процессоров,вроде Microsoft Word, следует иметь в виду, что эти программы добавляют в выходной файл служебную информацию о формате (размер страниц, тип шрифта и др.), которая будет непонятна транслятору. Однако практически все текстовые редакторы и процессоры позволяют вывести в выходной файл "чистый текст", без каких-либо служебных символов. Именно таким режимом и надлежит воспользоваться в нашем случае.

Подготовка и отладка программы
Представление данных
Описание данных
Структуры и записи
Способы адресации
Переходы
Вызовы подпрограмм
Макросредства ассемблера

Команды и алгоритмы
Как уже отмечалось выше, язык ассемблера является отражением архитектуры процессора, и изучение языка в сущности означает изучение системы команд и способов адресации, реализуемых процессором. Одна ко любой язык программирования полезен лишь постольку, поскольку на нем можно написать какие-то работоспособные программы. В то же время трудно представить себе реальную программу, которая выполняет чисто логические или вычислительные действия, ничего не вводя и не выводя и не взаимодействуя с другими программами. Однако такие вопросы, как организация выполнимой программы, ее запуск, взаимодействие с разнообразными аппаратными и программными объектами вычислительной системы (клавиатурой, дисками, таймером, памятью, системными драйверами и проч.) и, наконец, завершение являются прерогативой операционной системы.

Организация приложений MS-DOS
Циклы и условные переходы
Обработка строк
Использование подпрограмм
Двоично-десятичные числа
Программирование аппаратных средств

Расширенные возможности современных микропроцессоров
Операционная система MS-DOS, язык ассемблера МП 86 и методы программирования микропроцессоров корпорации Intel разрабатывались применительно к 16-разрядному процессору 8086 и тому режиму, который впоследствии получил название реального. Появление процессора 80386 знаменовало собой начато нового этапа в развитии операционных систем и прикладного программирования - этапа многозадачных графических операционных систем защищенного режима типа Windows и 32-разрядных прикладных программ. При этом, как уже отмечалось во введении, все архитектурные средства 86-го процессора входят в состав любого современного процессора, который, таким образом, можно условно разделить на две части - МП 86 и дополнительные средства, обеспечивающие защищенный режим, 32-разрядную адресацию и прочее.

Архитектурные особенности
Дополнительные режимы адресации
32-разрядные процессоры в программировании
Основы защищенного режима

Система команд процессоров Intel
Ниже приводится алфавитный перечень команд процессоров Intel с кратким описанием действия каждой команды и примерами ее использования. В разделах статей, начинающихся с обозначения 386+, описываются отличия действия рассматриваемой команды в современных 32-разрядных процессорах (80386, i486, Pentium). Как правило, эти отличия заключаются в возможности использования не только 8- и 16-разрядных, но и 32-разрядных операндов, а также расширенных режимов адресации памяти. Обычные 16-разрядные программы реального режима вполне могут использовать расширенные регистры процессора (ЕАХ, ЕВХ и проч.), 32-битовые ячейки памяти и варианты команд для их обработки.

ААА ASCII-коррекция регистра АХ после сложения
ADC Целочисленное сложение с переносом
386+BSF Прямое сканирование битов
386+ ВТК Проверка и сброс бита
CLC Сброс флага переноса
СМР Сравнение
486+ CMPXCHG Сравнение и обмен
DAA Десятичная коррекция в регистре AL
HLT Останов
386+

Assembler для Windows

Если Вы, дорогой читатель, знакомы с книгой "Assembler: учебный курс" Вашего покорного слуги, то, наверное, обратили внимание, что программированию в операционной системе Windows было посвящено всего две главы. Это немного и может служить лишь введением в данную область. Пришло время заняться этим серьезно.

Предисловие
Прежде всего, как и полагается в предисловии, отвечу на возможное замечание: зачем нужен ассемблер в Windows, если есть, например, Си и другие языки. Зачем нужен ассемблер, я уже писал в упомянутой выше книге. Позволю себе процитировать ее: "Зачем нужен язык ассемблера? - спросят меня. Самой простой и убедительный ответ на поставленный вопрос такой - затем, что это язык процессора и, следовательно, он будет нужен до тех пор, пока будут существовать процессоры. Более пространный ответ на данный вопрос содержал бы в себе рассуждение о том, что ассемблер может понадобиться для оптимизации кода программ, написания драйверов, трансляторов, программирования некоторых внешних устройств и т.д.

Введение
Детальное изложение рассматриваемых вопросов. Я по-прежнему "не жалую" макросредства/sup> и считаю, что начинающим программистам их не стоит использовать. Однако цель, которую я преследую в книге: сблизить позиции MASM и TASM — потребует от нас знания и макросредств. Итак, макросредства будут играть в моей книге достаточно узкую подчиненную роль. Впрочем, в книге имеется глава, где подробно разбираются директивы и макросредства ассемблера.

Основы 32-битного программирования в Windows
В данной части я намерен дать некоторую вводную информацию по средствам программирования на языке ассемблера. Данная глава предназначена для начинающих программирование на ассемблере, поэтому программистам более опытным ее можно пропустить без особого ущерба для себя. Прежде всего замечу, что в названии главы есть некоторая натяжка, т.к. технологии трансляции и в MS DOS, и в Windows весьма схожи. Однако программирование в MS DOS уходит в прошлое.

Средства программирования в Windows
Основы программирования в Windows
Примеры простых программ на языке ассемблера
Экскурс в 16-битное программирование
Ассемблеры MASM и TASM

Более подробное описание программирования в среде Windows
В данной части мы серьезно начинаем работать с сообщением WM_PAINT. В главе 1.3 мы уже рассматривали это сообщение, но не применяли его. Причиной было то, что в окне у нас были лишь управляющие элементы, но не было текстовой информации и графики. Теперь мы исправляем положение. Кроме сообщения WM_PAINT, речь в этой главе пойдет о множестве проблем, возникающих при программировании в Windows.

Примеры простейших программ
Консольные приложения
Редакторы и трансляторы ресурсов
Примеры программ использующих ресурсы
Управление файлами
Макросредства ассемблера в Windows

Более сложные примеры программирования в Windows
Таймер является одним из мощных инструментов, предоставляемых операционной системой и позволяющих решать самые разнообразные задачи. С таймером Вы познакомились, когда занимались консольными приложениями. Там мы пользовались функциями timeSetEvent и timeKillEvent. Для консольных приложений это очень удобные функции. В оконных приложениях чаще используют функции SetTimer и KillTimer. Особенность таймера, создаваемого функцией SetTimer, заключается в том, что сообщение WM_TIMER, которое начинает посылать система приложению после выполнения функции SetTimer, приходит со всеми другими сообщениями наравне, на общих основаниях. Следовательно, интервал между двумя приходами сообщения WM_TIMER может несколько варьироваться. В большинстве случаев это не существенно.

Примеры программ, использующих таймер
Многозадачное программирование
Создание динамических библиотек
Взаимодействие с ресурсами локальной сети
Разрешение проблем программирования в Win
Системное программирование в Windows
Ассемблер с языками высокого уровня

Отладка, анализ кода программ, драйверы
Вопросы, затронутые в данной части, относятся к категории сложных. Отладка и анализ кода программ невозможен без хорошего знания ассемблера. Однако если Вы дошли до этого места книги, значит Вам по плечу и такой материал.

Структура исполняемых модулей
Обзор отладчиков и дизассемблеров
Введение в Turbo Debugger
Описание работы с дизассемблером W32Dasm
Основы анализа кода программ
Исправление исполняемых модулей
Структура и написание драйверов .VXD

Приложения
Справочник API-функций и сообщений Windows
Справочник по командам и архитектуре Pentium
Защищенный режим микропроцессора Pentium
Список литературы
Алфавитный указатель

Assembler для начинающих

Почему вас могло бы заинтересовать программирование на языке ассемблера? Cегодня повсюду используются такие языки высокого уровня как Бэйсик, Фортран и Паскаль. Возможно, вы уже знакомы по крайней мере с одним языком высокого уровня. Если вы постоянно пльзуютесь персональным компьютером IBM, то вы знаете, что интерпритатор Бэйсика является частью системы. Зачем же возиться еще с одним языком программирования, тем более с таким, который сулит определенные трудности? Очевидно, даже располагая современными могучими языками, вы все еще нуждаетесь в ассемблере из-за его эффективности и точности.

Введение
Ассемблерные программы могут быть очень эффективными. Из программистов, с равными навыками и способностями, работающий на языке ассемблера создаст программу более компактную и быстродействущую, чем такая же программа, написанная на языке высокого уровня. Это так практически для всех небольших или средних программ. К сожалению, по мере возрастания размеров, программы на языке ассемблера теряют часть своих преимуществ. Это происходит из-за необходимого в ассемблерной программе внимания к деалям. Как вы увидите, язык ассемблера требует от вас планирования каждого действия компьютера. В небольших программах это позволяет оптимизировать работу программы с аппаратными средствами. В больших же программах огромное количество деталей может помешать вам эффективно работать над самой программой, даже если отдельные компоненты программы окажутся очень неплохими. Безусловно, программирование на языке ассемблера отвечает потребностям не каждой программы.

Программирование на языке Ассемблера
Персональный компьютер фирмы IBM

Основы компьютерных вычислений
В этой главе разъясняются свойства компьютеров. Она расскажет вам как компьютеры работают и почему они делают это именно так. Некоторые положения могут оказаться знакомыми вам. Если у вас нет опыта программирования на языке ассемблера, то многие операции будут для вас новыми.

Двоичное дополнение
Шестнадцатерчное представление
Язык машины и язык ассемблера
Синтаксис языка ассемблера
Принципы работы ассемблера
Биты, байты и слова
Нумерация бит
Набор символов
Принципы работы компьютерa
Процедуры
Стек
Прерывания

Микропроцессор 8088
Для того, чтобы понять 8088 и научиться программировать для него, мы начнем с его внутреннего устройства. Внутри процессора имеются специальные ячейки памяти, называемые регистрами.

Модель программирования 8088
Регистры общего назначения
Регистры адресации
Прямая адресация
Вычисление адресов
Адресация через Базу + смещение
База + индекс + смещение
Мод-р/м байт
Физическая адресация
Регистры сегмента
Переназначение сегмента
Оператор SEGMENT
Оператор ASSSUME
Управляющие регистры
Указатель стека (SP)
Регистр флагов
Флаг Знака
Флаг нуля
Флаг четности
Флаг переноса
Дополнительный флаг переноса
Флаг переполнения
Флаг захвата
Флаг прерывания
Флаг направления
Векторы прерываний


Команды процессора 8088
В этой главе обсуждается набор команд микропроцессора 8088. В предыдущих главах было рассмотрено расположение регистров и механизмы адресации микропроцессора; в этой главе будут изучены операции, которые можно выполнять с помощью регистров. Разобьем команды микропроцессора 8088 на несколько групп. Принадлежность команды к той или иной группе будет определяться функцией, которую она выполняет. В этой главе описываются группы команд и объясняется, как лучше всего ими пользоваться, но не будет приводиться последовательного описания команд (такую задачу решает руководство по Макроассемблеру).

Обмен
Ввод и вывод
Загрузка исполнительного адреса
Загрузка указателя
Передача флагов
Перевод
Операции со стеком
Передача параметров
Арифметические команды
Вычитание
Однооперандная арифметика
Сравнение
Десятичная коppекция
Коppекция: сложение и вычитание
Умножение
Коppекция: умножение
Деление
Символьная коppекция: деление
Преобразование
Арифммметический пример
Логические операции
Операции сдвига и вращения
Операции на строках
Загрузить и сохранить
REP префикс
Пересылка строк
Сканирование и сравнение
Инструкции передачи управления
Близкая и далекая передача управления
Адресация переходов
Безусловный переход
Переходы по условию
Проверки кодов условий
Управление циклами
Управляющие инструкции
Специальые команды


Использование ДОС и Ассемблера
В этой главе излагаются все детали, необходимые для ассемблирования и выполнения программ. В предыдущих главах объяснялось, как работает микропроцессор 8088. Теперь время проверить полученные знания, так как только самостоятельное составление и успешная прогонка программ могут дать полное представление о системе команд микропроцессора 8088. В данной главе будут рассмотрены четыре основные этапа подготовки программы: редактирование, ассемблирование, компоновка (редактирование связей) и отладка. Каждый из этих этапов осуществляется с помощью отдельной программы и отдельного набора процедур.

Дисковая операционная система
Система файлов
Директории
Командный процессор
Функции ДОС
Блок управления файла (FCB)
Фалы .COM и .EXE
Создание программы на языке ассемблера
Ассемблер и макроассемблер
Таблица символических имен
Перекрестные ссылки
Редактор
EXTRN и PUBLIC
Операция слияния (редактирования)
Карта слияния
DEBUG
Перевод из .EXE формы в .COM форму

Свойства Макроассемблера
В этой части будут описаны некоторые свойства макроассемблера,разработанного в фирме IBM. Хотя мы уже рассмотрели все команды процессора 8088, в ассемблере имеются и другие команды. Мы уже обсудили некоторые из этих псевдокоманд, например, операторы определения данных DB и DW. В этой главе будут введены более мощные средства языка ассемблера. Их объединяет то, что их использование делает написание программ на языке ассемблера более простым и легким.

Макроопределение
Аргументы макроса
Ассемблирование по условию
Повторение макроса
Макрооператоры
Команда INCLUDE
Сегменты
Структуры
Записи

Числовой процессор 8087
Конструкторы микропроцессора Intel 8088 предусмотрели для него уникальную возможность, характерную лишь для семейства микропроцессоров 8086/8088. Конструкции микропроцессора позволяет иметь в системе сопроцессор. Сопроцессор - это устройство, расширяющее возможности центрального процессора. Арифметический сопроцессор 8087 является сопроцессором центрального микропроцессора 8088, добавляющий команды числовой обработки и регистры с плавающей точкой. Эти дополнительные арифметические возможности расширяют набор команд микропроцессора 8088, и значительно увеличивают вычислительную мощность в тех случаях, когда программа выполняет операции с плавающей точкой и повышенной точности.

Операции 8087
Типы данных 8087
Представление в виде числа с плавающей точкой
Форматы действительных чисел
Определение действительных чисел
Модель программирования 8087
Управляющее слово
Слово cостояния
Набор инструкций 8087
Инструкции пересылки данных
Инструкции управления
Арифметические инструкции
Инструкции сравнения
Степенные и тригонометрические функции
Примеры
Десять в степени X
Изображение чисел с десятичной точкой
Квадратное уравнение
Синус угла
Отладка программ с использованием 8087

Персональный компьютер IBM
В каждом пункте этой главы мы будем обсуждать свои аспекты системы ввода-вывода IBM PC. В этом пункте речь пойдет о стандартных компонентах аппаратуры - о тех, которые находятся на процессорной плате системы. Другие части будут посвящены отдельным платам адаптеров ввода-вывода, которые по необходимости можно установить в систему. Центральным процессором IBM PC является Intel 8088, тот самый, естественно, который рассматривался на протяжении первых глав книги. У нас, как будто еще есть что о нем рассказать. Рядом с микросхемой 8088 на системной плате имеется пустое гнездо, в которую вставляется арифметический сопроцессор Intel 8087; он был рассмотрен в гл.7 и теперь уже должен быть знаком вам.

Системное оборудование
Динамик
Клавиатура
Реальное время
Возможности cистемы
Видеоадаптеры
Адаптеры монохромного дисплея и принтера
Адаптер цветного графического монитора
Текстовый режим
Графический режим
Цветовой режим в 320*200 APA
Графика высокого разрешения
Адаптер паралельного принтера
Адаптер асинхронных коммуникаций
Адаптер управления играми
Адаптер дайвера дискеты
Память прямого доступа

ROM BIOS
В предыдущей главе изучалась аппаратура IBM PC. Фирма IBM поставляет стандартные управляющие программы для рассмотренных выше аппаратных компонент. Эти программы находятся в ПЗУ на системной плате и носят название BIOS (Basic Input/Output System, базовая система ввода-вывода). В этой главе объясняются функции, обеспечиваемые BIOS. Материалом этой главы нужно пользоваться вместе с гл.3 и приложением A технического описания IBM PC. В гл.3 описана базовая системы ввода-вывода, в частности некоторые ее функции, а в приложении A приведен полный ассемблерный листинг BIOS IBM PC.

Некоторые замечания по содержаию ROM BIOS
Самотестирование при включении питания
Прерывания ROM BIOS
Драйверы доступа
Процедуры пользователя
Блоки параметров
Область данных ROM BIOS
Программы драйверов доступа
Системный сервис
Принтер и асинхронные коммуникации
Клавиатура
Процедура BIOS клавиатуры изнутри
Кассета
Дискета
Команды чтения и записи
Команда проверки
Команда форматирования
Дисплей
Функции ввода-вывода дисплея
Установка режима
Движение изоражения
Запись и чтение символов
Текст в графических режимах
Графика
Запись на телетайп

Расширения и подпрограммы языка ассемблера
В этой главе рассказывается о способе использования программ на языке ассемблера в больших программах. Приведенные ранее примеры были автономными программами на языке ассемблера. Ни один из других языков программирования не позволяет так, как язык ассемблера, управлять техническими средствами. Однако во многих случаях выбор языка ассемблера в качестве языка программирования может оказаться неправильным. Часто лучше всего бывает применять язык высокого уровня в сочетании с подпрограммами на языке ассемблера.

Расширения системы ввода-вывода
Выход в ДОС и сохранение резидента
Загрузка в верхие области памяти
Подпрограммы на языке ассемблера
Команда BLOAD к процедуре ассемблера
Короткая встроенная программа
Программы языков высокого уровня
Заключение

Справочная система по языку Assembler

Интересно проследить, начиная со времени появления первых компьютеров и заканчивая сегодняшним днем, за трансформациями представлений о языке ассемблера у программистов. Когда-то ассемблер был языком, без знания которого нельзя было заставить компьютер сделать что-либо полезное. Постепенно ситуация менялась. Появлялись более удобные средства общения с компьютером. Но, в отличие от других языков, ассемблер не умирал, более того он не мог сделать этого в принципе. Почему? В поисках ответа попытаемся понять, что такое язык ассемблера вообще. Если коротко, то язык ассемблера — это символическое представление машинного языка. Все процессы в машине на самом низком, аппаратном уровне приводятся в действие только командами (инструкциями) машинного языка. Отсюда понятно, что, несмотря на общее название, язык ассемблера для каждого типа компьютера свой. Это касается и внешнего вида программ, написанных на ассемблере, и идей, отражением которых этот язык является. По-настоящему решить проблемы, связанные с аппаратурой (или даже, более того, зависящие от аппаратуры как, к примеру, повышение быстродействия программы), невозможно без знания ассемблера.

Немного об ассемблере
Программная модель микропроцессора
Структура программы на ассемблере
Описание команд
Типы данных
Макросредства Ассемблера
Опции транслятора
Описание директив
Ошибки трансляции

Ассемблирование без секретов

Свою программистскую карьеру мыщъх начинал с микрокомпьютера "Правец-8D", оснащенного довольно экзотической версией Бейсика и нехилым руководством с кучей конкретных примеров (правда, на болгарском языке). Процесс освоения буржуинской техники происходил приблизительно так. Набрал программу. Запустил. Помедитировал над листингом. Попробовал что-нибудь изменить. Запустил. Посмотрел на реакцию. Осмыслил. Что-то еще изменил. И вот так, шаг за шагом мыщъх разобрался во всех операторах языка и научился писать эффективные программы, в которых нет ничего лишнего.

Введение или много лет тому назад
Лицо асматика в ASCII
Блокнот с записями начинающего асматика
Зоопарк ассемблеров
Зоопарк ассемблеров - 2
Определение целевой платформы
Метод ассемблерных вставок
Классический пример
Законченная программа anti-debug.c
Anti-debug.exe без отладчика

Справочник Novell Netware 4

Персональные компьютеры (ПК или ПЭВМ) предназначены для тех, кто хочет выполнять на своем собственном компьютере собственные приложения и поддерживать собственные персональные файлы, не прибегая к услугам мини-ЭВМ или больших машин, полностью контролируемых отделами информационных систем. Вскоре после их появления в начале 80-х ПК стали объединяться в сети, что позволило совместно использовать файлы и ресурсы, такие как принтеры. К середине 80-х сети стали настолько крупными и сложными, что управлять ими снова стали отделы информационного обеспечения. Сегодня сети - это далеко не простые и легко обслуживаемые устройства. Они требуют защиты, наблюдения и обслуживания. Кроме того, сети часто выходя за рамки одного учреждения и становятся глобальными. Это уже требует квалифицированного персонала другой сферы - специалистов по телефонным сетям, микроволновой или спутниковой связи.

Что такое сети?
Простейшая сеть состоит из двух компьютеров, совместно использующих файлы и принтеры. Значительно более сложные сети могут включать в себя все разбросанные по миру компьютеры крупной компании. Все что вам нужно для совместного использования принтера это простой коммутационный блок, но чтобы организовать эффективную совместную работу с файлами и выполнять сетевые прикладные программы, потребуется плата сетевого интерфейса (NIC) и кабель для соединения систем.

Что такое сети?
Что такое сети? - 2
Что такое сети? - 3
Из чего состоит сеть?
Схемы построения сетей
Платы сетевого интерфейса и топология сетей
Платы сетевого интерфейса и топология сетей - 2
Кабели
Архитектура сети
Коммуникационные протоколы

Продукты для глобальных сетей и межсетевого взаимодействия
Novell предлагает несколько продуктов для глобальных сетей и межсетевого взаимодействия, предоставляющих пользователям прозрачный доступ к файловым серверам, принтерам и системам электронной почты различных типов сетей. Подробнее о некоторых продуктах мы расскажем в главах, посвященных реализации конкретных средств.

NetWare WAN Links
NetWare MultiProtocol Router
Коммуникационные продукты
NetWare Access Server (NAS)
Продукты связи с системами IBM
NetWare for SAA
Продукты управления сетью
Концентраторы NetWare и NetWare Nub Services
NetWare Services Manager
Анализатор сети LANanalyzer

Метод переключения окна
Этот метод все шире применяется в общественных и частных сетях. Основываясь на большей надежности современных линий, он устраняет некоторые издержки X.25. Например, в X.25 данные перемещаются из источника через два или более промежуточных узла, и каждый из этих узлов должен подтвердит получение, послав подтверждение передавшему узлу. Когда пакет, наконец, достигает получателя, он должен послать подтверждение источника. Метод переключения окна требует только этого последнего шага. В результате этот метод обеспечивает большую пропускную способность.

Тенденции развития
ISDN
SONET
Подключения в глобальной сети
Подключения удаленных рабочих станций
PC AnyWare
Программное обеспечение NetWare Access Server
NetWare Asynchronous Communication Services
Novell NetWare WAN Links
Связь с хост-системой

Рабочая станция как сервер печати
Фактически, рабочая станция сама может стать сервером печати. NVLPD.EXE работает как резидентная в памяти фоновая программа (TSR) и организует спулинг заданий печати Unix с помощью утилиты DOS PRINT.COM. Спулинг заданий на рабочей станции организуется в любом нужном направлении, а перенаправить их можно с помощью команды CAPTURE NetWare. Другими словами, когда задание печати попадает на рабочую станцию, то в том, что касается PC и сети это просто еще одно задание печати.

Выбор сервера
Пропускная способность и "узкие места"
Пропускная способность и "узкие места" - 2
Микропроцессор
Intel 80386
Intel 80486
Микропроцессорные системы
Шина сервера
Шина ISA.
Стандарты VESA и Intel PCI.

Задание контекста вспомогательного сервера
Если вы являетесь пользователем ADMIN для первого пользователя и хотите быть администратором для этого пользователя, наберите название организации высшего уровня, которое вы задали на первом сервере. Чтобы изменить поле, начните набирать в нем текст. Если вы хотите предоставить другому пользователю права супервизора, задайте полный контекст его имени

Копирование файлов NetWare
Загрузка драйверов локальной сети
Задание корня NDS
Задание синхронизации времени
Задание контекста сервера
Задание контекста вспомогательного сервера
Редактирование файлов запуска
Другие параметры установки
Завершение и выход
Переход к NetWare v.4

Установка продукта NFS Server фирмы Novell
NFS Server поставляется на одной дискете высокой плотности. Многие (включая и меня) предполагают, что такой дорогой программный продукт как NFS Server должен содержать не одну дискету и тоненькое руководство. Поэтому Novell существенно понизила цену и предлагает теперь даже по низкой цене "начальный комплект", поддерживающий одновременно пять NFS-клиентов.

Регистрация в системе
Настройка процедур подключения к сети
Имена в службе каталогов
Имена в службе каталогов - 2
Задание частичных имен
Команда LOGIN
Проблемы при регистрации
Смена пароля
Команда WHOAMI
Выход (отмена регистрации)

Управление каталогами и файлами с помощью Netware Administrator
Утилита Netware Administrator позволяет вам перемещать каталоги и файлы и изменять их атрибуты. Найдите объект тома, затем для вывода содержимого корневых каталогов дважды щелкните на нем "мышью". Дважды щелкнув "мышью" на каталоге, вы можете вывести список его подкаталогов и файлов. Выбрав каталог или файл, можно указать в меню Object команду Move, Copy, File, Delete или Rename. Если вы выберите из каталога объект тома, то можете выбрать также команду Salvage.

Смена контекста в дереве каталога
Информация о томе
Средства утилиты FILER
Средства утилиты FILER - 2
Средства утилиты FILER - 3
Средства утилиты FILER - 4
Средства утилиты FILER - 5
Управление атрибутами каталога
Управление атрибутами файла
Задание фильтров наследуемых полномочий

События, связанные с контейнером
Выберите Audit Directory Service, затем Audit Directory Tree. Просмотрите дерево каталога, найдите контейнер, который вы хотите отслеживать, и нажмите F10. Затем выберите Auditor Container Login. Наберите пароль, данный вам супервизором.

Запуск удаленной консоли из AUTOEXEC.NCF
Использование Remote Console
Использование Remote Console - 2
Утилита SERVMAN
Утилита SERVMAN - 2
Изменение параметров SET сервера
Утилита MONITOR
Загрузка утилиты MONITOR
Основной экран утилиты MONITOR
Информация о подключении

Справочник по NetWare 4.11

В сетях NetWare 3TM и более ранних версий, пользователи могли соединиться одновременно со многими серверами, используя команду ATTACH. В NetWare 4, используя сервис Каталога NetWare, пользователь больше не должен использовать команду ATTACH для соединения со многими серверами.
При регистрации в дереве Каталога, пользователи автоматически получают доступ к любым сетевым ресурсам дерева Каталога, на которые установлены права для этих пользователей. Права пользования ресурсами проверяются процедурой аутентификации.
Команда ATTACH может быть по-прежнему использована при регистрации в сети NetWare 4 для соединения с серверами, основанными на базе данных Bindery.
Используемые при решении данных задач утилиты: "LOGIN", "LOGOUT" и "MAP", описаны в руководстве Справочник по утилитам.

Вариант Btrieve для сервера
Этот продукт поставляется в комплекте ОС NetWare и состоит из набора программ NLM для сервера NetWare. Комплект Btrieve для сервера включает также набор других исполняемых файлов для рабочих станций, которые обеспечивают доступ к файлам Btrieve на этом сервере (или любом другом сервере NetWare, на котором установлен Btrieve).

CDM
COM-порты
HAM
HBA
HCSS
Hot Fix
ICMP
IOEngine
IPX
IPXODI

Буфер
Количество буферов приемов пакетов определяет во время инсталляции сервера. Это значение увеличивается операционной системой при высокой интенсивности использования буфера в соответствии со следующими параметрами

Буфер приема пакетов
Вектор расстояния
Версия DOS
Взаимодействие
Вилка данных
Вилка ресурсов
Виртуальный загружаемый модуль
Дочерние программы VLM
Программы мультиплексоры VLM
Владелец

Нерасширенная сеть AppleTalk
Номер, присваиваемый каждой рабочей станции, подключенной к серверу NetWare. При каждом подключении рабочей станции к серверу станция может получать различный номер соединения. Номера соединений присваиваются также процессам, серверам печати и приложениям, которые используют соединения с сервером.

Номер сети
Номер соединения
Номер узла
Нумерация в сети
Нумерация устройств
Нумерация устройств - 2
Область переназначения
Обновление
INSTALL.NLM
Миграция через сеть с помощью DS Migrate

Протокол BOOTP
Протокол, используемый некоторыми хостами для получения адресов IP. Хост посылает по локальной сети широковещательный запрос BOOTP. Сервер, подключенный к этой локальной сети и выполняющий функции хоста, при получении запроса BOOTP посылает пакет, содержащий адрес хоста. Если сервер находится в другой сети, то передатчик BOOTP должен направить широковещательный запрос серверу BOOTP и передать ответ хосту.

Протокол Router Information Protocol
Протокол Print Server Status and Control Protocol
Протокол Reverse Address Protocol
Протокол Service Advertising Protocol
Протокол Address Resolution Protocol
Протокол Packet BurstTM
Протокол File Transfer Protocol
Протокол Transmission Control Protocol
Протокол NetWare Core Protоcol
Протоколы

Счетчик переходов
Количество кабельных сегментов, через которые проходит пакет сообщения до адреса назначения в сети или межсетевом соединении. Сеть назначения пакета может быть удалена не более чем на 16 переходов от источника. Утилиты сервера DISPLAY NETWORKS, DISPLAY SERVERS и TRACK ON показывают количество переходов, на которое удалены другие распознаваемые сети от маршрутизатора сервера.

Счетчик переходов
Счетчик псевдопереходов
Таблица определения томов
Таблица размещения файлов
Таблица элементов каталога
Теги ресурсов
Том
Том - 2
Том NetWare
Топология

Сети NetWare 3.12-4.1.Книга ответов

Фирмой Novell разработано несколько поколений сетевых операционных систем, начиная с ELS (Entry Level System) NetWare, которые могли обслуживать до 8 станций. Advanced NetWare 2.x уже являлась полноценной сетевой ОС, способной одновременно обслуживать до 100 пользователей сервера на базе 286+ PC, как выделенного, так и невыделенного. На современном этапе развития компьютерных технологий наибольший интерес представляют NetWare версий 3.12 и 4.1.
Версия 3.12 является "топ моделью" своего поколения, в которой исправлены ошибки предыдущих версий и "наведены мосты" к сетям нового поколения - 4.x. Версия 3.12 появилась позже 4.0 и унаследовала ее некотрые черты - поддержку CD-ROM, включение в поставку почтовых средств Basic MHS и First Mail, VLM-клиент, фрейм IEEE_802.2 и некоторые другие. В связи с более поздним появлением эти черты иногда ошибочно считают принадлежностью только NetWare 4.x.

Введение в NetWare
Версии NetWare 4.0, 4.01 и 4.02 были быстросменяемыми заявками на новое поколение, и их "сырость" значительно сдерживала стремление пользователей сменить надежную 3.12 на что-то более прогрессивное. Появление на рынке NetWare 4.1 порадовало приверженцев продуктов Novell, которым требуется создавать и обслуживать большие и очень большие локальные и территориально разъединенные сети.

Основные черты NetWare 3.x - 4.x
Организация объектов сети
NetWare 2.x-3.x
NetWare 4.x
Другие отличия NetWare 4.x
Одноранговые сети Novell
NetWare Lite 1.0-1.1
Personal NetWare и Novell DOS 7
Файл-сервер, сервер приложений
Что представляет собой сервер NetWare?

Сервер NetWare
Сервер NetWare представляет собой компьютер, на котором программой SERVER.EXE загружена сетевая операционная система. Сервер служит основным средством удовлетворения сетевых запросов пользователей, большинство из которых реализуется ядром ОС по протоколу NCP. Сервер может являться и платформой для запуска серверных приложений - модулей NLM. Количество пользователей, одновременно подключенных к серверу, ограничено его лицензионным параметром, влияющем на цену ОС.

Распределение памяти
Распределение памяти - 2
Распределение памяти - 3
Использование процессора
Использование процессора - 2
Платформа для сервера NetWare?
Как происходит загрузка ОС сервера?
Как происходит загрузка ОС сервера? - 2
Как остановить сервер?
Запрет регистрации пользователей на сервере

Рабочая станция NetWare
Рабочей станцией NetWare является компьютер, имеющий связь с серверами по локальной сети или через удаленное подключение, на котором загружено клиентское программное обеспечение. Приложения рабочих станций могут обращаться к стандартным ресурсам DOS - дискам и принтерам, переназначенным оболочкой на сетевые устройства, а также непосредственно использовать вызовы сетевых протоколов, необходимые для обеспечения распределенной обработки информации.

Коммуникации рабочей станции
Монолитный драйвер IPX.COM
Драйверы открытого интерфейса ODI
Опции IPX файла SHELL.CFG
Секция LINK SUPPORT файла NET.CFG
Секции LINK DRIVER driver_name NET.CFG
Секции LINK DRIVER driver_name NET.CFG - 2
Клиентское обеспечение
Оболочка NETX
Запросчик VLM

Система хранения данных
Ключевой задачей файлового сервера является хранение больших объемов информации. Эффективность и возможности системы хранения данных сервера определяются совокупностью и согласованностью аппаратных средств хранения данных и возможностями операционной системы.

Аппаратные средства хранения данных
Аппаратные средства хранения данных - 2
Интерфейсы
Интерфейсы - 2
Интерфейсы - 3
Интерфейсы - 4
Устройства хранения информации
Информация о свободном пространстве
Volume volname is almost out of disk space
Ограничения на дисковое пространство

Аппаратура компьютерных сетей
Аппаратура сетей - узлы и средства их соединения - определяется выбранной сетевой архитектурой. В данном разделе приводятся сведения о наиболее популярных архитектурах локальных и глобальных сетей.

Аппаратура компьютерных сетей
Компоненты сети
Таблица маршрутизации обычно составляется
Сетевые архитектуры
Ethernet
Топология популярных разновидностей Ethernet
Топология популярных разновидностей Ethernet - 2
ARCnet
Token Ring
Local Talk, 100BaseVG, TCNS, Token Bus

Коммуникационная система сервера NetWare
Коммуникационная подсистема сервера обеспечивает связь между процессами, исполняющимися на платформе сервера (ядро ОС и приложения сервера) и внешним (по отношению к серверу) миром. В подсистему также входит и внутренний мост-маршрутизатор, обеспечивающий связь сетей, подключенных к разным адаптерам сервера. Подсистема коммуникаций является многоуровневой, ее нижними уровнями являются сетевые платы, коммуникационные порты и их драйверы.

Сетевые адаптеры и драйверы
Сетевые адаптеры и драйверы - 2
Протоколы IPX/SPX
Протоколы TCP/IP
Внутренний маршрутизатор
Таблица перестраивается
Соединения сервера и приложений
Что означает пометка Not-Logged-In
Проверка сети до генерации сервера
Диагностика коммуникационной системы

TCP/IP, Internet и UNIX
Передача данных в Internet основана на принципе коммутации пакетов, в соответствии с которым поток данных, передаваемых от одного узла другому, разбивается на пакеты, передающиеся в общем случае через систему коммуникаций и маршрутизаторов независимо друг от друга и вновь собирающиеся на приемной стороне. Весь комплект базируется на IP - протоколе негарантированной доставки пакетов (дейтаграмм) без установления соединения (unreliable connectionless packet delivery)

Адресация и маршрутизация в Internet
Адресация и маршрутизация в Internet - 2
Адресация и маршрутизация в Internet - 3
Протоколы Internet
Интеграция с UNIX
NetWare/IP
Управление сетями, SNMP
Поддержка TCP/IP на станции DOS/Windows
Поддержка TCP/IP на станции Windows 95
Подключение к удаленной сети IPX через TCP/IP

NetWare и MS Windows
Сети NetWare и различные реализации Windows имеют средства эффективного взаимодействия друг с другом, взаимодополняя свои функциональные возможности. Клиенты Windows имеют полноценный доступ к ресурсам NetWare (файлам, принтерам), имея и возможность загрузки системы с сервера NetWare. Сетевые версии (Windows for Workgroups, Windows 95) могут использовать свои дополнительные сетевые сервисы параллельно с NetWare, а применение транспорта IPX/SPX и внутреннего маршрутизатора сервера позволяет связываться между собой клиентам Windows, подключенным к разным кабельным сетям. Windows NT и NetWare имеют средства обеспечения эффективного сосуществования двух (или трех, считая Bindery и NDS по отдельности) существенно различных систем организации объектов и их защиты в сети.

Управление ресурсами NetWare из Windows
Управление ресурсами NetWare из Windows - 2
Управление ресурсами из Windows 95
Планирование дисков в Windows 95
Как установить поддержку NetWare в Win 3.x
Дополнительные возможности
Поддержка NetWare в Windows for Workgroups
При отключении кабеля от сетевой
Версии ODI-драйверов и оболочки
Как установить поддержку NetWare в Windows 95

Сервис печати
NetWare предоставляет возможность клиентам сети пользоваться сетевыми (разделяемыми) принтерами. Эти принтеры физически могут подключаться к серверу, рабочей станции, к локальной сети непосредственно или через интерфейсные устройства, и даже подключаться через коммуникационные серверы.

Что такое принт-сервер
Что такое локальный и удаленный принтер
Что такое аппаратный принт-сервер
Что такое очередь по умолчанию
Пользовательские соединения сервера
Можно ли подключить к принт-серверу плоттер
Размещение принт-серверов по сети
Принтеры для совместного использования
Тип и параметры подключения принтера
Как установить сервис печати в NetWare 3.x

Обеспечение комфортных условий работы в сети
Для создания комфортных условий работы в сети NetWare имеет набор специальных средств. Настройку сетевого окружения при входе в сеть осуществляет автоматически выполняемая процедура регистрации, называемая также сценарием входа или Login Script.

Процедура регистрации (Login Script)
Процедура регистрации (Login Script) - 2
Специальные символы процедур регистрации
Команды процедур регистрации.
Переменные в командах процедур регистрации
Переменные в командах процедур регистрации - 2
Создание и использование меню
Опции команды ITEM
Опции команды ITEM - 2
Управляющие команды меню

Локальные сети. Работа с сервером Novell NetWare

Для получения доступа к ресурсам файл-сервера программа, запущенная на рабочей станции, должна выполнить процедуру подключения к файл-серверу. При этом файл-серверу сообщается имя пользователя и пароль, назначенные супервизором сети. В зависимости от предоставленного супервизором доступа программа сможет использовать те или иные ресурсы файл-сервера.
Несмотря на то что в составе Novell NetWare поставляются утилиты login.exe и attach.exe, предназначенные для подсоединения к файл-серверу, у вас может возникнуть потребность создания своих аналогичных по выполняемым действиям утилит, дополнив их другими функциями. Например, вы можете организовать свою систему учета времени работы пользователей или добавить другие возможности. Мы научим вас создавать такие утилиты.
У вас может также возникнуть потребность определить список серверов, работающих в сети, а также список подключенных к ним пользователей. Мы приведем исходные тексты программ, получающих различную информацию о конфигурации сети и о сетевой операционной системе Novell NetWare.
Для разработки программ, защищенных от несанкционированного копирования, могут пригодиться сведения о способах "извлечения" серийного номера операционной системы Novell NetWare для любого работающего в сети сервера.
Если вы разрабатываете системы управления базами данных (СУБД) с многопользовательским доступом и хранением данных на дисках сервера, вам не обойтись без детального изучения методов корректной работы с файлами в многопользовательской среде. Вам потребуются средства синхронизации, ориентированные на использование файл-сервера. Мы научим вас работать с такими средствами.

Введение
Все программы, приведенные здесь, транслировались при помощи системы разработки программного обеспечения Borland C++ версии 3.1. Однако вы сможете воспользоваться Borland C++ версии 3.0 или даже 2.0 при соответствующей несложной адаптации исходных текстов. Не исключено, что некоторые программы, в которых не используется объектно-ориентированное программирование, вы сможете адаптировать к среде Microsoft Quick C версии 2.51.

Сервер и рабочая станция
Подключение пользователя к серверу
Работа с томами и каталогами
Работа с файлами
Синхронизация процессов
База данных объектов
Передача и прием сообщений
Управление файл-сервером
Функции NETWARE C INTERFACE FOR DOS
Маска прав доступа каталога

Сервер Novell NetWare
Программное обеспечение файл-сервера сети Novell NetWare состоит из сетевой операционной системы NetWare. Эта операционная система работает в мультизадачном режиме реального времени, обеспечивая совместное использование ресурсов файл-сервера рабочими станциями.

Сервер Novell NetWare
Рабочая станция Novell NetWare
Состав сетевых функций
Создание и удаление каналов
Работа с томами и каталогами файл-сервера
Работа с файлами
Передача данных между рабочими станциями
Синхронизация программ
Работа с базой данных объектов
Управление файл-сервером

Проверка присутствия сетевой оболочки
В этой главе мы рассмотрим процедуры получения списка активных серверов в сети и подключения пользователей к серверам. Вы научитесь составлять программы, выполняющие действия, аналогичные сетевым утилитам slist.exe, login.exe и attach.exe. Эти утилиты были подробно описаны нами в томе "Библиотеки системного программиста", посвященном установке аппаратного и программного обеспечения локальных сетей компьютеров.

Проверка присутствия сетевой оболочки
Листинг 1
Листинг 2
Поиск серверов в сети
Создание канала с файл-сервером
Подключение к файл-серверу
Программа SLIST
Листинг 3
Листинг 4
Листинг 5

Таблица томов файл-сервера
В этой главе мы рассмотрим вопросы, связанные с обращением к томам и каталогам, расположенным на файл-сервере Novell NetWare. Мы расскажем вам о механизме отображения дисков рабочей станции на сетевые каталоги и научим вас составлять программы, выполняющие такое отображение. Вы узнаете об атрибутах каталогов, сможете создавать, переименовывать и удалять каталоги, узнавать и изменять их атрибуты

Программа VOLINFO
Листинг 7
Отображение дисков рабочей станции
Программа WKSTABLE
Листинг 8
Программа DIRMAP
Листинг 9
Программа DIRUNMAP
Листинг 10
Таблица каталогов файл-сервера

Атрибуты файлов
Для выполнения некоторых операций с файлами, расположенными на файл-сервере, вам не обойтись без специальных функций сетевой оболочки. К таким операциям можно отнести, например, просмотр и изменение байта атрибутов и байта расширенных атрибутов файла, копирование файлов с диска файл-сервера на диск файл-сервера без вовлечения в эту операцию рабочей станции и т. д.

Атрибуты файлов
Поиск файлов
Программа FSCAN
Листинг 17
Изменение атрибутов
Программа SETEATTR
Листинг 18
Удаление файлов
Программа FERASE
Листинг 20

Блокирование файлов
Локальная сеть - разновидность многопользовательской системы, в которой реализован множественный доступ к файлам, хранящимся на файл-сервере. В однопользовательской однозадачной среде, такой, как MS-DOS, в каждый данный момент времени к любому файлу может обращаться только одна программа. Если пользователь работает в среде Microsoft Windows, являющейся однопользовательской многозадачной средой, существует возможность одновременного обращения к одому и тому же файлу из нескольких работающих одновременно приложений.

Программа FLOCK
Листинг 21
Блокирование физических записей
Программа PHYSLOCK
Листинг 22
Программа RECACC
Листинг 23
Блокирование логических записей
Программа LOGLOCK
Листинг 24

Объекты, коды объектов и права доступа
Файл-сервер Novell NetWare содержит базу данных объектов, в которой есть сведения о ресурсах, доступных в сети (файл-серверы, серверы печати и т. п.), о пользователях и группах пользователей и т. д. Эта база данных называется Bindery. Физически она находится в двух скрытых файлах с именами net$bind.sys и net$bval.sys, расположенных в каталоге SYS:SYSTEM.

Объекты, коды объектов и права доступа
Программа BACCESS
Листинг 26
Просмотр базы объектов
Программа BSCAN
Листинг 27

Режимы приема сообщений
В этой главе мы рассмотрим службу передачи сообщений, которая имеется в операционной системе Novell NetWare. Эта служба позволяет организовать передачу коротких сообщений между рабочими станциями с использованием ресурсов файл-сервера. Например, утилита SEND операционной системы Novell NetWare передает сообщения именно с помощью описанных в этой главе средств. Мы расскажем вам не о всех возможностях системы передачи сообщений, а только о самой интересной, на наш взгляд, - возможности передачи сообщений от одной рабочей станции на другие и на файл-сервер.

Режимы приема сообщений
Определение режима приема сообщений
Установка режима приема сообщений
Передача сообщений пользователям
Программа MSGSEND
Листинг 28
Программа MSGRCV
Листинг 29

Определение даты и времени
В последней главе мы расскажем вам о некоторых функциях, предназначенных для получения справочной информации о состоянии файл-сервера и для управления файл-сервером

Определение даты и времени
Получение строк описания файл-сервера
Определение имени файл-сервера
Определение подключения к файл-серверу
Установка даты и времени
Функция установки даты и времени
Запрет и разрешение подключений к серверу
Останов файл-сервера

Разные функции
Проверка сетевой оболочки
Обмен байтов в 16-битовом слове
Обмен байтов в 32-битовом слове
Подключение к файл-серверу
Отключение от файл-сервера
Получить номер канала первичного сервера
Получить номер канала текущего сервера
Установить предпочтительный сервер
Подключение к файл-серверу
Отключение от всех файл-серверов

Скрытый гипноз - перейти
Техника гипноза СК - перейти
Техника мысленного гипноза - перейти
Гипнотерапия - перейти
Паттерны гипнотических техник - перейти
Гипнотические реальности - перейти
Гипнотический транс - использование - перейти
Практика интегративной гипнотерапии - перейти
Corel Painter - перейти
Текстура и бумага - перейти
Инструмент Image Hose - перейти
Слои - перейти
Формы - перейти
Динамичные слои Burn Tear Bevel World Liquid - перейти
Динамичные слои над всем холстом - перейти





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий