Искать реферат        
Рефераты на 5 с плюсом
С нашим сайтом написать реферат проще простого

Программы

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

Страница: [1] [2] [3] [4] [5]

Для удобства отладки в старшCптетраду записывают 0:

0 0 0 0

0 -9

Обратное представление простое: молодш0птетрада, если она находится в пределах представления чисел 0 - 9 определяет соответствующее двоично-десятичное неунаковане число. При необходимости работать с большим разрядностью таких чисел необходимо использовать также несколько байт.

Лекция с 24.09.98.

Пример структуры программы на языке ассемблера (ш0блон).

Приведем основные директивы, которые используются и программе на языке ассемблера. Теперь используются упрощенные способы описания сегментов. Сегменты - это части программы (сегменты данных). Текст программы можно набирать большими или малыми буквами, программа ассемблера самостоятельно переводит текст в верхний регистр. Обязательно в тексте программы писать комментарии. Текст который стоит за символом ";" является комментарием, он игнорируется при ассемблирования программы. Директива которая обычно идет с начала программы dosseg описывает расположение сегментов. Директива mode small - директива описания модели памяти, например в этом случае говорят, что модель памяти типа small, то есть один сегмент кода и один сегмент кода и один сегмент данных. Директива. Stack 100 - директива, которая задает начало сегмента стека. В стеке хранятся временные переменные и адреса возврата из подпрограммы или прерываний. Как правило любая программа имеет сегмент стека. В данном случае такая запись директивы. Stack 100 обозначает, что стек имеет длину 100байтив. Точную величину стека определяет число вызовов подпрограмм и системных ф-ций, стек надо увеличивать. В конечном итоге размер стека подбирают экспериментально, когда программа уже написана и отлаженная. Директива. Data - директива начала сегмента инициализированных данных, после этой строки помещают переменные значение которых известно (инициализированы переменные). Директива. Data? - Директива начала сегмента неинициализированных данных. Директива. Code - начало сегмента кода. Сегмент кода - это часть кода содержащей команды МП, собственно это и есть сама программа. В некоторых случаях в этот сегмент можно помещать не только команды, но и данные. Например в подпрограммах обработки прерываний. Директива. Startup - точка начала выполнения программы. Со следующего после данной строки начинается выполнение программы после ее загрузки в память, эта директива повинн0пбуты обязательно внутри сегмента кода, но не обязательно н0пйого начала. Директива. Exit 0. - Это директива окончания программы при выполнении этой строки управление будет передано ОС. Таких директив в программе может быть несколько, число после директивы может принимать несколько значений, это число после окончания программы присваивается переменной ОС с названием ERRORLEVEL, эта переменная используется в командных файлах. Есть специальные команды для работы с этой переменной.из которых может состоять метка или имя 255, но отличаются метки и имена по первым 32символах. Целесообразно в программе использовать осмысленные имена. Удобно и программе для быстрого распознавания меток от имени начинать все метки с буквы L и записывать их только большими буквами. При записи имен переменных удобно использовать префикс, который означает тип переменной, например: skp_byte. При программировании с использованием ассемблера masm или tasm можно использовать любое число локальных меток @ @. Для перехода к таким меток надо использовать зарезервированные слова: @ F - forward; @ B - backward. Перш0п @ F - это переход к следующей метки, @ B - это переход к предыдущей метки. Метка или имя переменной не повиннVпбуты зарезервированным словом.

Поле операндов.

Поле операндов зависит от предыдущего поля.

Поле комментариев.

Структура программы на языке asm.

При работе любой программы в любой момент времени можно выделять несколько участков памяти с которыми работает процессор. Использование сегментов является особенностью процессоров х86. Оно преследует такую цель: ами.

По ния сегментов является попыткой Заха выть несвязанные участки памяти в программе. Допускалось, что для того, чтобы определить адрес некоторой ячейки памяти нужно знать две составляющие этого адреса: адрес начального сегмента и адрес смещения ячейки памяти от начала сегмента. Адреса начал сегментов находятся в соответствующих сегментах регистрах CS, DS, SS, ES - изменяя содержимое этих регистров можно получить доступ к тем или иным участкам памяти, поэтому такая запись легко сломать. Поэтому в процессоре 386 в захащеному режиме работы адреса начал сегментов, их длины и права доступа хранятся в специальных системных единицах. В сегментных регистрах сохраняют только индекс структуры внутри таблицы. Это позволило изолировать сегменты и ограничило доступ к ним из программы. Ведь для доступа нужно знать не только содержание сегмента регистра, но и той структуры на которую он указывает. Такое изменение возможно только при использовании привилегированных команд, выполняется только в определенных условиях, могут выполняться в ОС, но не могут использоваться в программах пользователя. Параллельно с этим увеличение размера сегментов: амид 64Кб для 86, до 4Гб для 486. Кроме того программа будет работать, если изменить адрес начала сегмента. Это означает, что в памяти он будет перенесен в другое место. При этом относительное смещение в сегменте нельзя смещать. Это позволит переносить программу в памяти даже во время работы. Использование сегментации памяти позволяет резко увеличить размеры памяти, которую можно использовать. Так, в захащеному режиме максимально возможный объем памяти, которую можно адресовать - 64Тб. Это виртуальная память. Тогда как физический объем памяти составляет 4Гб. В некоторых случаях использовать сегментацию нецелесообразно. Поэтому в старших моделях можно работать с сегментами длиной до 4Гб. Это означает, что вся физическая память рассматривается как один сегмент. Полностью все преимущества сегментации памяти проявляется в захащеному режиме работы. В реальном режиме работы оперирует с 4-мя сегментами: а

Сегмент кода;

Сегмент данных;

Сегмент стека;

Сегмент дополнительных данных.

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

Сегмент кода;

Сегмент данных;

Сегмент стека;

Сегмент дополнительных данных.

Страница: [1] [2] [3] [4] [5]

версия для печати

Читайте также:
Становление и развитие Киевской Руси
Лесные ресурсы Украины
Каучук и резина
Structure and classification of phraseological units
СНГ