Студопедия — Объектный код программы
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Объектный код программы

Часть 1. Первоначальные сведения об ассемблере и разработке программ для процессора 8086

Глава 1. Пример разработки простейшей программы на ассемблере

Создание исходного текста программы

На рис. 1.1 приведен текст простейшей программы на ассемблере, выводящей на экран строку " Hello-o-o-o!".

 

; Данные программы

DATA SEGMENT

HELLO DB 'Hello-o-o-o!$'

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DATA

START: mov AX, DATA

Mov DS,AX

Mov AH,9; вывод сообщения

Mov DX,OFFSET HELLO

Int 21h

Mov AH,4Ch; выход из программы

Int 21h

CODE ENDS

END START

Рис. 1.1. Простейшая программа.

Чтобы создать файл с исходным текстом данной программы, надо запустить текстовый редактор, набрать приведенный на рис. 1.1 текст и сохранить его в файле с любым именем и расширением.ASM (расширение может отличаться от.ASM, но тогда при вызове Turbo Assembler нужно будет указывать его вместе с именем файла, тогда как расширение.ASM транслятор использует по умолчанию).

Трансляция, компоновка и запуск программы на выполнение

Подготовив текст программы и сохранив его в текстовом файле (например, HELLO.ASM), можно переходить к созданию исполняемого файла, который будет запускаться на выполнение, как любая программа DOS.

На рис. 1.2 представлена схема разработки программ на Assembler. Как видно, из рисунка, процесс создания программы включает подготовку исходного текста программы, трансляцию его в файл специального вида, называемого объектным файлом,и компоновку полученного -объектного файла (или полученных объектных файлов, если создаваемая программа состоит из нескольких модулей) в выполняемый файл. После того как в результате компоновки получен выполняемый файл, его можно загрузить и выполнить в DOS. Если в результате работы созданной программы возникнет необходимость в изменениях ее алгоритма, весь процесс повторяется сначала. Для трансляции HELLO.ASM необходимо в строке приглашения DOS ввести:

MASM hello

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

 

D:\masm.exe hello

Microsoft (R) Macro Assembler Version 5.00

Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.

 

На вопросы отвечаем нажатием Enter

 

Object filename [hello.OBJ]:

Source listing [NUL.LST]:

Cross-reference [NUL.CRF]:

 

51298 + 380702 Bytes symbol space free

 

0 Warning Errors

0 Severe Errors

Это означает, что процесс трансляции завершился успешно. В этом случае Assembler создает файл HELLO. OBJ, содержащий оттранслированную программу Если в процессе трансляции будут обнаружены ошибки, то объектный файл не создается, а сообщения об ошибках появляются в пункте Severe Errors. Тогда необходимо отредактировать исходный текст программы, устранив в нем указанные в сообщениях ошибки, и повторить трансляцию.

 

 

Рис. 1.2. Создание программы на ассемблере.

 

После получения объектного файла выполняется его компоновка в выполняемый файл. Для этого используется компоновщик Link. Для запуска компоновщика необходимо ввести строку:

 

LINK hello

 

После этого произойдет запуск на выполнение компоновщика с передачей ему в качестве параметра имени объектного файла (по умолчанию используется расширение.OBJ). При работе компоновщика на экране должно появиться сообщение:

 

D:\link.exe hello

 

Microsoft (R) Overlay Linker Version 3.69

Copyright (C) Microsoft Corp 1983-1988. All rights reserved.

 

На вопросы отвечаем нажатием Enter

 

Run File [HELLO.EXE]:

List File [NUL.MAP]:

Libraries [.LIB]:

 

LINK: warning L4021: no stack segment

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

Теперь созданную программу можно запустить на выполнение, введя в строке приглашения DOS имя исполняемого файла hello. В результате работы программы на экране появится строка

 

Hello-o-o-o!

 

Таким образом, процесс создания программы успешно завершен! Из исходного текста программы, находящегося в файле HELLO.ASM, транслятором создан объектный файл HELLO.OBJ, из которого, в свою очередь, компоновщик создал выполняемый файл HELLO. ЕХЕ. Кроме того, компоновщик создает карту использования памяти (файл с расширением.MAP), которая может понадобиться для анализа компоновки программы, состоящей из нескольких объектных файлов.

Объектный код программы

 

Если при трансляции программы на вызов Assembler

 

Source listing [NUL.LST]:

ввести hello

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

 

 

0000 DATA SEGMENT

0000 48 65 6C 6C 6F 2D 6F HELLO DB 'Hello-o-o-o!$'

2D 6F 2D 6F 21 24

000D DATA ENDS

0000 CODE SEGMENT

ASSUME CS: CODE, DS: DATA

0000 B8 ---- R START: mov AX, DATA

0003 8E D8 mov DS,AX

0005 B4 09 mov AH,9

0007 BA 0000 R mov DX,OFFSET HELLO

000A CD 21 int 21h

000C B4 4C mov AH,4Ch

000E CD 21 int 21h

0010 CODE ENDS

END START

 

Рис. 1.3. Фрагмент листинга HELLO.LST.

 

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

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

 




<== предыдущая лекция | следующая лекция ==>
Давайте вместе посмотрим, как всё же развивается и осуществляется прогноз раввина Маркса и Мой о Еврейской Сверхжадности и Самоубийстве, на примере России и СССР…? | Организация данных на магнитном диске

Дата добавления: 2015-10-12; просмотров: 2659. Нарушение авторских прав; Мы поможем в написании вашей работы!



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

Интуитивное мышление Мышление — это пси­хический процесс, обеспечивающий познание сущности предме­тов и явлений и самого субъекта...

Объект, субъект, предмет, цели и задачи управления персоналом Социальная система организации делится на две основные подсистемы: управляющую и управляемую...

САНИТАРНО-МИКРОБИОЛОГИЧЕСКОЕ ИССЛЕДОВАНИЕ ВОДЫ, ВОЗДУХА И ПОЧВЫ Цель занятия.Ознакомить студентов с основными методами и показателями...

Меры безопасности при обращении с оружием и боеприпасами 64. Получение (сдача) оружия и боеприпасов для проведения стрельб осуществляется в установленном порядке[1]. 65. Безопасность при проведении стрельб обеспечивается...

Весы настольные циферблатные Весы настольные циферблатные РН-10Ц13 (рис.3.1) выпускаются с наибольшими пределами взвешивания 2...

Studopedia.info - Студопедия - 2014-2024 год . (0.013 сек.) русская версия | украинская версия