Гомо сапиенс и геном

Геном и деление на расы. Новые методы изучения ДНК-эволюции. Адам и Ева в файлах ДНК. Открытие Люси в Эфиопии американским исследователем Доном Джохансоном. Находка кенийского человека "плосколицего". Расшифровка генома человека, прогнозы на будущее.

Рубрика Биология и естествознание
Вид реферат
Язык русский
Дата добавления 28.04.2010
Размер файла 22,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Міністерство освіти і науки України

Чернівецький національний університет

імені Юрія Федьковича

Факультет комп'ютерних наук

Кафедра комп'ютерних систем та мереж

Реферат

Структура програми на мові Асемблера. Типи даних

2009

Мова Асемблера є мовою компілюючого типу, тобто програма, написана мовою асемблера, не може бути безпосередньо виконана або інтерпретована, і повинна бути попередньо відкомпільована (правильніше казати “асембльована”, оскільки під компіляцією програми звичайно розуміють її переклад з мови високого рівня в машинний код, а мова асемблера є мовою низького рівня і перекладається в машинний код практично 1:1 у виконуваний код. Програма, яка виконує таке перетворення, називається асемблером, або, що не зовсім правильно, компілятором (транслятором) Асемблера. Одним із найкращих у цьому класі програмним забезпеченням є пакет TASM 3.1. фірми Borland Int., який був випущений у 1991 р. Його перевагами є дуже велика швидкість асемблювання вихідного тексту, розширення порівняно з аналогами інших фірм синтаксис мови, добре розвинута система допомоги. Це і обумовило вибір саме його для вивчення в цьому курсі.

Традиційно на ринку асемблера для мікропроцесорів фірми Intel є два пакети:

“Макроасемблер” MASM фірми Microsoft;

Turbo Assembler TASM фірми Borland.

Пакет MASM отримав свою назву тому, що дозволяє програмісту задавати макровизначення (макроси) - іменовані групи команд, які можна вставляти в програму в будь-якому місці, вказавши тільки ім'я групи в місці вставки. пакет TASM має два режими роботи. Один із них, який називається MASM. Другий режим, який називається IDEAL, має більш зручний синтаксис написання програм, більш ефективне використання пам'яті при трансляції програми та інші нововведення, які наближають компілятор асемблера до компілятора мов високого рівня Транслятор TASM, працюючи в режимі MASM, підтримує майже всі можливості транслятора MASM. Таким чином, маючи пакет асемблера фірми Borland TASM 3.0 і вище, можна вивчити основи і TASM, i MASM.

Далі, оскільки великі програмні проекти майже ніколи не складаються з одного файлу з вихідним текстом, і до того ж часто пишуться різними людьми і різними мовами, мова Асемблера повинна мати засоби для зв'язку асемблерних програм між собою та з програмами на інших мовах. Якраз таким засобом є лінкер (його ще називають компоновщиком, або - не зовсім правильно - завантажувачем). Принцип роботи лінкера полягає втому, що він об'єднує декілька об'єктних файлів, одержаних на виході будь-якого компілятора або асемблера, а також бібліотечний файл, одержані на виході бібліотекаря, в один виконуваний файл із двійковим машинним кодом. У процесі такого об'єднання він проводить настройку адрес у виконуваному коді і дозволяє встановити зовнішні посилання між об'єктними і бібліотечними модулями програми. Звичайно, для того, щоб це було можливо, компілятор або асемблер повинні генерувати не безпосередньо виконуваний код, а деякий проміжний об'єктний код, в якому б мітилася вся необхідна лінкеру інформація про настройку адрес і зв'язки між об'єктними модулями (зовнішні посилання). Таким чином, насправді компіляція або асемблювання вихідного тексту програми у більшості сучасних комерційних компіляторів відбувається у дві стадії: спочатку сам компілятор або асемблер генерують проміжний об'єктний код, а потім лінкер перетворює його у виконуваний, в той же час проводячи збірку декількох об'єктних модулів у один виконуваний і настройку адрес у ньому. Саме так і працює Turbo Asstmbler. Звичайно, якщо програма складається лише з одного вихідного файлу і не використовує ніяких бібліотек, то 2 стадії були б не потрібні - можна було б відразу створювати виконуваний файл без генерування проміжного об'єктного і його збірки, але це ускладнювало б сам компілятор або асемблер (необхідно було б окремо аналізувати, є програма одномодульною чи багатомодульною, або ж взагалі відмовитися від підтримки багатомодульності і принципу роздільної компіляції і асемблювання, як у деяких застарілих пакетах). Тому задля простоти, розроблювачі компіляторів або асемблерів домовилися незалежно від кількості модулів програми, завжди проводити компіляцію та асемблювання у 2 стадії: власне компіляція або асемблювання, а потім лінкування. Крім того, вони також домовилися використовувати єдиний стандартний формат об'єктних файлів, так званий OBJ-формат, запропонований фірмою Microsoft Corp. Саме завдяки цьому стандарту і з'явилася можливість об'єднувати програми на різних мовах, від різних компіляторів, асемблерів, що підтримують цей стандарт. Пакет Turbo Assembler також підтримує OBJ-стандарт. Лінкер, що входить у нього, називається Turbo Link (TLINK), і відрізняється від аналогів високою швидкістю лінкування та розширеними можливостями (ще один аргумент на користь пакета TASM).

До складу пакету TASM входить ще декілька утиліт (бібліотекар, генератор перехресних посилань і т. ін.). Але вони не є настільки необхідними, як TASМ i TLINК, у всякому випадку для програміста-початківця на мові Асемблера. Для таких випадків цілком достатньо мати TASM i TLINK. Решта утиліт пакету будуть розглянуті окремо в міру виникнення в них необхідності. З цієї ж причини в цьому розділі не будемо детально розглядати повний синтаксис командного рядка утиліт TASV i TLINK, а лише їх найважливіші та найчастіше вживані параметри і ключі.

Загальна схема розробки програми на мові Асемблера така:

prog _ I. asm - початковий асемблерний текст програми;

prog _ I. obj. - машинний об'єктний код програми;

prog _ I. Ist. - лістин асемлюювання програми;

prog _ I. crf. - лістінг перехресних посилань;

prog _ I. exe - завантажувальний модуль.

Командний рядок TASM у спрощеному варіанті виглядає так:

TASM <file> ,

де <file> - ім'я файла з програмою на мові Асемблера. Розширення можна не писати, розуміючи .asm. Цілком аналогічно виглядає спрощений командний рядок TLINK.

TLINK <file> ,

де <file> - ім'я об'єктного файлу. Розширення можна не писати, розуміючи .obj.

Оскільки послідовний запуск TASM i TLINK дуже часто зустрічається при програмуванні на мові асемблера, до комплекту поставки TASM входить декілька різних BAT-файлів. які спрощують цю справу до однієї команди. Для наших цілей підходить один із них, а саме ASM.BAT. Саме його ми і будемо всюди використовувати. Крім того, зручно занести у файл NC.EXT або VC.EXT рядки, що запускають для ASM-файлів послідовно TASM i TLINK, а для OBJ-файлів - TLINK. Тоді весь процес асемблювання і лінкування програми можна запустити натисненням всього однієї клавіші <ENTER>. З тією ж метою зручності слід у файлі AUTOEXEC.BAT занести каталог TASM до списку каталогів, доступних по PATH.

Програмісти-початківці, як правило, вчаться на прикладах (це набагато ефективніше, ніж просто читання документації та книжок із наступними намаганнями написати хоча б що-небудь працююче). Для полегшення навчання фірма Borland поставляє разом із TASM більше 20 прикладів вихідних текстів. Найперший і найпростіший з них називається HELLO.ASM, і, як видно з його назви, нічого корисного не робить, крім того, що виводить на екран текст “Hello, World”. Але він дуже зручний для того, щоб розібратися у тому, як працюють TASM і TLINK , і зрозуміти шаблон структури програми на мові асемблера. Прочитайте, розберіть його і спробуйте одержати файл HELLO.EXE, який можна запускати і відладжувати. При запуску він повинен вивести на екран повідомлення “Hello, World” і завершитися.

Допустимі символи при написанні тексту програми на Асемблері:

1. Всі латинські букви A-Z, a-z.

2. Цифри від 0 до 9.

3. Розділювачі : , . [] () < > + / % ! “ ? \ = # ^

Треба пам'ятати, що мікропроцесор апаратно підтримує такі основні типи даних:

байт (8 біт);

слово (16 біт);

подвійне слово (32 біти);

учетверенне слово (64 біти);

цілий тип зі знаком (8,16 або 32 біти);

цілий тип без знаку (8,16 або 32 біти);

указник на пам'ять ближнього (32 біти) та дальнього типу (48 біт);

ланцюжок - набір байтів слів або подвійних довжиною до 4 Гбайт;

бітове поле (до 32 байт);

неупакований двійково-десятковий тип - байтове представлення десяткової цифри від 0 до 9;

упакований двійково-десятковий тип - упаковане представлення двох десяткових цифр від 0 до 9 в одному байт.

Ідентифікатор в Асемблері може містити букви латинського алфавіту, цифри і деякі спеціальні знаки - _ , ? , $, @. Він не може починатися цифрою і містити більше ніж 255 символів, хоча транслятор сприймає лише перші 32, а інші ігнорує. Використовується для позначень кодів операцій, імен змінних та назв міток.

При використанні директиви MODEL транслятор робить доступними кілька ідентифікаторів, до яких можна звертатися під час виконання програм:

Ідентифікатори, які створює директива MODEL

Ім'я ідентифікатора

Значення змінної

@ code

Фізична адреса сегмента коду

@ data

Фізична адреса сегмента даних типу near

@ fardata

Фізична адреса сегмента даних типу far

@ stack

Фізична адреса сегмента стеку

Обов'язковим параметром директиви MODEL є модель пам'яті. Цей параметр визначає модель сегментації пам'яті для програмного модуля.

Моделі пам'яті

Модель

Тип коду

Тип даних

Призначення моделі

TINY

near

near

Код і дані об'єднані в одну групу з іменем DGROUP (com-програма)

SMALL

near

near

Код займає один сегмент, дані об'єднані в одну групу DGROUP (більшість програм на асемблері)

MEDIUM

far

near

Код займає кілька сегментів по одному на кожний програмний модуль, що об'єднуються. Всі посилання на передачу управління - типу far. Дані об'єднані в одній групі: всі посилання на них - типу near.

COMPACT

near

far

Код в одному сегменті, посилання на дані - типу far, дані в декількох.

LARGE

far

far

Код у кількох сегментах, по одному на кожний програмний модуль, дані - у кількох.

Допускається, що програмний модуль може мати тільки певні типи сегментів, які визначаються так званими спрощеними директивами опису сегментів:

Спрощені директиви опису сегментів

Формат директиви

Призначення

.CODE

Початок або продовження сегмента коду

.DATA

Початок або продовження сегмента коду ініціалізованих даних. Також використовується для визначення даних типу near

.CONST

Початок або продовження сегмента постійних даних (констант) модуля

.DATA?

Початок або продовження сегмента неініціалізованих даних. Також використовується для визначення даних типу near

.STACK (розмір)

Початок або продовження сегмента стеку модуля. Параметр (розмір) задає розмір стеку

.FARDATA (ім'я)

Початок або продовження сегмента ініціалізованих даних типу far

.FARDATA (ім'я)

Початок або продовження сегмента неініціалізованих даних типу far.

У загальному випадку початковий файл на Асемблері може містити конструкції таких типів:

команди асемблера - мнемонічні позначення машинних команд;

директиви асемблера - конструкції, які не генерують машинних команд, а є інструкціями для транслятора, задають режим його роботи;

макрокоманди - конструкції, які займають один рядок і після трансляції генерують в об'єктному модулі послідовність команд, директив або макрокоманд асемблера.

Приведемо свого роду шаблон для написання програм на мові Асемблера:

текст з крапкою з комою є коментарем; і ігнорується при асемблюванні

dosseg; директива опису розташування сегментів

.model small; директива опису моделі пам'яті

.stack 100; початок сегменту стеку

.data ; початок сегменту ініціалізованих даних

.data? ; початок сегменту неініціалізованих даних

.code ; початок сегменту коду

.startup; точка початку виконання програми з наступного рядка починається виконання програми, ця директива повинна бути всередині сегменту коду, але не обов'язково на самому його початку

.exit 0 директива закінчення програми управління передається операційній системі число в директиві присвоюється змінній ERRORLEVEL операційної системи

End директива закінчення тексту програми на мові Асемблера

Одержавши першу працюючу програму на мові Асемблера, можна поговорити і про відладку асемблерних програм. Відладка асемблерних програм досить сильно відрізняється від відладки програм, написаних мовами високого рівня, найперше тому, що асемблер не має нічого схожого на інтегроване середовище із вбудованим відладчиком подібно до Borland Pascal або Borland C++. Для відладки асемблерних програм доводиться використовувати спеціальні пакети відладчиків, що надаються окремо. Серед відладчиків виділяють символьні відладчики, які можуть відладжувати асемблерну програму прямо у вихідному тексті, і несимвольні, що дозволяють відладжувати лише її виконуваний код. Природно, що символьні відладчики потужніші і зручніші, ніж несимвольні. Серед них найбільш потужним є Turbo Debugger (TD); до того ж він володіє дуже зручним інтерфейсом користувача. Саме тому він був вибраний для вивчення. Крім того, він є “рідним” відладчиком для TASM, оскільки він розроблений тією ж фірмою, і тільки з компіляторами і асемблером Borland він справді працює як символьний відладчик (для решти - як будь-який інший відладчик). У свою чергу, і TASM, й інші компілятори Borland розраховані на те, що їх програми будуть відладжуватися в середовищі TD.

У пакеті TD 6 утиліт, але програмісту-початківцю в більшості випадків потрібен лише файл TD.EXE - власне відладчик.

Спрощено синтаксис командного рядка TD виглядає так:

TD <file>

де <file> - ім'я виконуваного файлу.

Розширення можна не писати, розуміючи .ехе. У TD є потужна контекстно-залежна інтерактивна система допомоги, зручні й зрозумілі глобальне та локальне меню, а в нижньому рядку екрана - рядок-підказка, в якому перераховані часто використовувані клавіші.

Запустити програму на виконання у відладчику можна в одному з чотирьох режимів:

режим безумовного виконання (F9)

виконання по кроках (F7-процедура або переривання обробляються по кроках; F8-процедура або переривання обробляються як одна команда);

виконання до поточного положення курсора (F4);

виконання з установкою точок переривань (F2-вибір рядка переривання, F9-запуск на виконання).

Відзначимо, що, крім вікна Module, при покроковому виконані корисно використовувати вікно CPU, яке можна викликати через глобальне меню командою View/CPU. Воно відображає стан мікропроцесора і складається з 5 підвікон:

вікно з початковою програмою в дизасембльованому (машинному) вигляді;

Registers-вікно регістрів мікропроцесора (16 або 32-бітних);

вікно ознак мікропроцесора;

вікно стеку Stack;

вікно з дампом пам'яті Dump, які відображає вміст області пам'яті за адресою з лівої частини вікна.

Зручніше працювати з початковим текстом у вікні Modul, ніж з його лизасембльованим варіантом у вікні CPU. Їх можливості можна сумістити вибором пункту глобального меню View з наступним вибором у ньому потрібних імен підвікон CPU.

Програмісту-початківцю в більшості випадків вистачає навіть тих команд, які згадано в рядку-підказці, і дуже рідко виникає необхідність користуватися меню, і тим більше, командним вікном. Тому не будемо зупинятися на робота з TD - вона настільки проста, що її цілком можливо освоїти самостійно. разом з тим, відладчик - досить потужний засіб. В основному використовуються такі команди: дамп (D), введення (Е), ім'я (N), вихід (Q), трасування (Т), запис (W), регістри (R).

Слід бути обережним при використанні TD, особливо для команди Е (Enter): введення даних в хибні адреси пам'яті або введення некоректних даних можуть призвести до непередбачуваних наслідків; на екрані у цьому випадку можуть з'являтися “дивні” символи, клавіатура заблокується, або навіть DOS припинить роботу програми і завантажиться з диска. Будь-які серйозні ушкодження навряд чи відбудуться, але можливі деякі несподіванки, а також втрата даних, які вводилися при роботі з відладчиком.

Якщо дані, які вводяться в сегмент даних або в сегмент коду, виявилися некоректними, слід знову, використавши команду Е, виправити їх.

СПИСОК ЛІТЕРАТУРИ

1. А.А.Кочетков. Turbo Assembler при разработке программ. - Киев: “Диалектика”, 1995. - 288 с.

2. Л.Скенлон. Персональные ЭВМ IBM PC и ХТ. Программирование на языке Ассемблера. - Москва: “Радио и связь”, 1989. - 336 с.

3. Д.Абель. Язык Ассемблера для IBM PC. - Москва, 1993. - 447 с.


Подобные документы

  • Генетическая терминология, организация генома вирусов, понятие о лизогенном и литическом цикле. Особенности генома и жизненного цикла ретровирусов, геном бактерий. Современные представления о геноме человека: теоретические и практические аспекты.

    презентация [125,3 K], добавлен 04.04.2011

  • Определение возможности развития заболеваний с наследственной предрасположенностью. Создание международной программы "Геном человека". Электромагнитная среда обитания человека. Оценка риска, связанного с использованием ГМО в продуктах питания человека.

    реферат [130,8 K], добавлен 01.03.2012

  • Определение нуклеотидной последовательности генома человека. Идентификация генов на основе физического, хромосомного и функционалного картирования, клонирования и секвенирования. Новая отрасль биологии - протеомика. Изучение структуры и функции белков.

    лекция [39,8 K], добавлен 21.07.2009

  • Строение молекулы ДНК. Ферменты генетической инженерии. Характеристика основных методов конструирования гибридных молекул ДНК. Введение молекул ДНК в клетку. Методы отбора гибридных клонов. Расшифровка нуклеотидной последовательности фрагментов ДНК.

    реферат [2,7 M], добавлен 07.09.2015

  • Геном как совокупность наследственного материала, заключенного в клетке организма, оценка его роли и значение в жизнедеятельности человеческого организма, история исследований. Регуляторные последовательности. Организация геномов, структурные элементы.

    презентация [772,9 K], добавлен 23.12.2012

  • Развитие эволюционных учений. Исследования Менделя. Теория эволюции Дарвина. Эволюционные воззрения Ламарка. Генетический дрейф. Современная генетика. Геном человека. Аксиомы биологии. Фенотип и программа его построения. Синтез генитики и эволюции.

    реферат [41,0 K], добавлен 09.06.2008

  • Механизм эволюции прокариотического и эукариотического геномов. Свойства, отбор и динамика рисунка локализации мобильных генетических элементов. Роль мобильных генетических элементов и горизонтального переноса генетического материала в эволюции генома.

    курсовая работа [84,5 K], добавлен 30.09.2009

  • Амплификация как важный механизм увеличения объема генома. Роль горизонтального переноса генетического материала в эволюции генома. Значение сохранения дозового баланса генов в генотипе для формирования фенотипа. Взаимодействия между генами в генотипе.

    реферат [18,7 K], добавлен 24.02.2010

  • Место генетики среди биологических наук. Генетика и этика – проблемы генной инженерии и клонирования высших организмов и человека. Наследственная система или геном клетки. Совокупность наследственных структур. Открытие и расшифровка двойной спирали ДНК.

    реферат [31,7 K], добавлен 31.10.2008

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

    реферат [30,8 K], добавлен 20.11.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.