Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебн пособ по арх и прогр МП.doc
Скачиваний:
64
Добавлен:
10.12.2013
Размер:
1.59 Mб
Скачать

7.3. Доступ к элементам стека

Команды PUSH и POP дают доступ только к вершине стека, но иногда требуется доступ и к другим элементам стека. Для этого необходимо установить регистр, например ВР, на одну из ячеек стека, например на вершину, а затем для ссылок на элементы стека использовать адресацию вида [BP+n] с подходящим числом n.

Пусть, на пример, в стеке записано не менее трех слов, а нам необходимо загрузить в регистр АХ копию третьего элемента стека. Адрес третьего слова равен адресу вершины плюс 4. Учитывая это, устанавливаем ВР на вершину стека, и для доступа используем [BP+4]. Блок-схема команды дана на рис.7.4.

Рис.7.4. Доступ к элементам

MOV BP, SP

MOV AX, [BP+4]

Регистр ВР использовался потому, что:

  • Во-первых, таким образом использовать регистр SP , т.е. [SP+4], нельзя, т.к. SP не относится к числу программно-доступных регистров.

  • Во-вторых, в последней из команд не указан никакой сегментный регистр, поэтому он выбирается по умолчанию. Для ВР таким регистром является SS. То есть команда воспринимается транслятором как MOV AX, SS:[BP+4], а значит, происходит считывание из стека. Можно использовать другой регистр, например ВХ, который по умолчанию указывает на сегмент DS, тогда вторая команда из представленного блока должна иметь вид:

MOV AX, SS:[BХ+4] .

Тема 8. Практическая работа на пк.

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

1. Ввод исходного текста программы

Текст программы можно набрать в любом текстовом редакторе, например в Блокноте, WordPad, внутреннем редакторе операционной системы (команда Edit для DOS версий 6.22 и более ранних) или любом другом, который окажется под рукой. Полученный текст программы необходимо сохранить с расширением .asm.

2. Создание объектного модуля

Создание объектного модуля

выполняется программой-транс-

лятором tasm.ехе (или masm.ехе).

3. Создание загрузочного модуля

Создание загрузочного модуля

выполняется программой tlink.

4. Отладка программы

Отладка программы выполняется

отладчиком td. Подробнее работа

с ним описана в приложениях 1 и 2.

Объектный модуль (*.obj) содержит представление исходной программы в машинных кодах и некоторую другую информацию, необходимую для отладки и компоновки его с другими модулями. Для получения объектного модуля исходный файл программы необходимо подвергнуть трансляции при помощи транслятора tasm. Формат командной строки следующий:

Tasm </ключ> <имя исходного файла>, <имя объектного файла>, <имя файла листинга>, <имя файла перекрестных ссылок >

Обязательным параметром является лишь <имя исходного файла>, а остальные следует писать лишь при необходимости.

Файл листинга (*.lst) содержит, в частности, ассемблерный код исходной программы. Но в листинге приводится расширенная информация об этом коде. Для каждой команды ассемблера задается её машинный код и смещение в кодовом сегменте. Кроме того, в конце листинга транслятор формирует таблицы, содержащие информацию о метках и сегментах, используемых в программе. Если текст программы содержит ошибки, то транслятор включает в листинг сообщения о них. Указания на ошибку включаются непосредственно после ошибочной информации.

Файл с расширением .crf содержит перекрестные ссылки и в небольших учебных программах необходимость в нем отсутствует.

После выполнения операции компоновки над объектным файлом (*.obj) программой tlink получаем исполняемый файл (*.exe). Исполняемый файл (*.ехе) содержит инструкции для микропроцессора. При запуске программы исполняемый файл загружается в ОЗУ, и из него микропроцессор получает инструкции, необходимые для выполнения программы.

Все это можно проиллюстрировать следующим образом:

ОЗУ

Инструкции МП *.exe

из *.ехе файла

Ключи командной строки TASM и TLINK приведениы в ПРИЛОЖЕНИИ 3.