русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Организация программ


Дата добавления: 2015-06-12; просмотров: 582; Нарушение авторских прав


Ниже даны основные рекомендации для написания ассемблерных программ:

1. Четко представляйте себе задачу, которую должна решить программа.

2. Сделайте эскиз задачи в общих чертах и спланируйте общую логику программы.

Например, если необходимо проверить операции пеpесылки нескольких байт, начните c определения полей с пересылаемыми данными.

Затем спланируйте общую стратегию для инициализации, условного перехода и команды LOOP.

Приведем основную логику, которую используют многие программисты в таком случае:

инициализация стека и сегментных регистров

вызов подпрограммы цикла

возврат

Подпрограмма цикла может быть спланирована следующим образом:

инициализация регистров значениями адресов и числа циклов

Метка: пересылка одного байта увеличение адресов на 1 уменьшение счетчика на 1: если счетчик не ноль, то идти на метку если ноль, возврат

3. Представьте программу в виде логических блоков, следующих друг за другом. Процедуры не превышающие 25 строк (размер экрана) удобнее для отладки.

4. Пользуйтесь тестовыми примерами программ. Попытки запомнить все технические детали и программирование сложных программ «из головы» часто приводят к многочисленным ошибкам.

5. Используйте комментарии для описания того, что должна делать процедура, какие арифметические действия или операции сравнения будут выполняться и что делают редко используемые команды. (Например, команда XLAT, не имеющая операндов).

6. Для кодирования программы используйте заготовку программы, скопированной в файл с новым именем.

Важно:

uМетки процедур должны завершаться двоеточием для указания типа NEAR. Отсутствие двоеточия приводит к ассемблерной ошибке.

uМетки для команд условного перехода и LOOP должны лежать в границах -128 до +127 байт. Операнд таких команд генерирует один байт объектного кода. Шест. от 01 до 7F соответствует десятичным значениям от +1 до +127, а шест. от FF до 80 покрывает значения от -1 до +128. Так как длина машинной команды может быть от 1 до 4 байт, то соблюдать границы не просто. Практически можно ориентироваться на размер в два экрана исходного текста (примерно 50 строк).



uПри использовании команды LOOP, инициализируйте регистр CX положительным числом. Команда LOOP контролирует только нулевое значение, при отрицательном программа будет продолжать циклиться.

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

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

uДля вызова процедуры используйте команду CALL, а для возврата из процедуры — команду RET. Вызываемая процедура может, в свою очередь, вызвать другую процедуру, и если следовать существующим соглашениям, то команда RET всегда будет выбирать из стека правильный адрес возврата.

 

uБудьте внимательны при использовании индексных операндов. Сравните:
MOV AX,SI
MOV AX,[SI]
Первая команда MOV пересылает в регистр AX содержимое регистра SI. Вторая команда MOV для доступа к пересылаемому слову в памяти использует относительный адрес в регистре SI.

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

 

Лекция 12.
Компоновка программ



<== предыдущая лекция | следующая лекция ==>
Команды циклического сдвига | Межсегментные вызовы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.