Конспект лекций по курсу язык ассемблера ibm icon

Конспект лекций по курсу язык ассемблера ibm


1 чел. помогло.
Смотрите также:
Конспект лекций удк 651. 5 Ббк 60. 844 Конспект лекций по курсу «Делопроизводство»...
Конспект лекций удк 651. 5 Ббк 60. 844 Конспект лекций по курсу «Делопроизводство»...
Опорный конспект лекций по макроэкономике Автор: Фридман А. А...
Конспект лекций по курсу «Организация производства»...
Конспект лекций по курсу «Русский язык и культура речи»...
Конспект лекций по курсу “Начертательная геометрия и инженерная графика” Кемерово 2002...
Горобец е. Г., Карлина о. А., Нарушевич а. Г., Нечепуренко м. Ю...
Горобец е. Г., Карлина о. А., Нарушевич а. Г., Нечепуренко м. Ю...
Конспект лекций часть 1 2008 перечень ссылок основная: М...
Конспект лекций по курсу «бизнес-планирование в условиях рынка»...
Конспект лекций по курсу “ Общая химическая технология” для студентов специальности 090200 всех...
Конспект лекций по курсу «теория чисел» Методическая разработка...



Загрузка...
страницы: 1   ...   4   5   6   7   8   9   10   11   12
вернуться в начало
скачать
^

Передача параметров между процедурами (организуется по желанию программиста)





  1. Передача параметров через регистры МП

Передавать значения фактических параметров можно через регистры МП по желанию программиста. Например,

; процедура вычисления AX := max {AX, BX}

max proc far

CMP AX, BX

JGE Max1

MOV AX, BX

Max1: RET

max endp



; в основной процедуре



MOV AX, A ; подготовка параметров

MOV BX, B ; к вызову процедуры

CALL max

MOV C, AX ; сохранение результата



  1. ^ Передача параметров по ссылке означает передачу адреса (имени) ячейки памяти, соответствующей фактическому параметру (передача именованного значения из ассемблера в Pascal). Для этого можно использовать имя ячейки памяти или загрузить адрес перед вызовом процедуры в регистр (BX, BP, SI или DI, т.к. в процедуре можно использовать эти регистры для адресации ).

Например, командой

LEA BX, B

CALL……

  1. ^ Передача параметров через стек.

Передача параметров через регистры ограничена их небольшим количеством. Если параметров много (больше 5-ти), их передают через стек следующим образом:

- Основная программа записывает в стек фактические параметры (значения или адреса);

- В процедуре используются параметры, записанные в стек.

Например:

; вызов p(a1,…, ak)

PUSH a1



PUSH ak

CALL p



В процедуре можно использовать дополнительный указатель стека BP, но в начале процедуры следует сохранить значение BP, которое использовалось в вызывающей программе, т.е.

; начало процедуры Р

P proc

PUSH BP ; сохранение BP

MOV BP, SP ; настройка BP на вершину стека



Затем можно использовать базовую адресацию. Например, для близкого вызова

[BP + 2] – адрес возврата, занесенный в стек автоматически,

[BP + 4] – адрес последнего параметра ak.

До возврата из процедуры следует восстановить BP командой

POP BP

затем очистить стек от передаваемых параметров, чтобы он не перегружался при многократном вызове процедур, т.е. установить в SP значение, на 2*k больше, чем было после вызова процедуры.

Есть 2 возможности корректного возврата из процедуры.

а) корректировать SP в вызывающей программе

; конец процедуры

; в вызывающей программе

POP BP

CALL p

RET

ADD SP, 2*k ; коррекция SP

P ENDP



б) использовать команду возврата с восстановлением стека, имеющую вид для близкого вызова

RET {cnt}

где {cnt} – счетчик (константное выражение ), размером слово.

Команда выполняет следующие действия:

IP := Stack SP := SP + {cnt}

Тогда конец процедуры имеет вид:

POP BP

RET 2*k

p ENDP

Для дальнего вызова процедуры команда возврата имеет вид

RET {cnt}

и выполняет следующие действия:

IP := Stack CS := Stack SP := SP + {cnt}

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

  1. ^ Проблема сохранения регистров при обращении к процедуре

Чтобы процедура не портила значения регистров, которые использовались в вызывающей программе, требуется в тексте процедуры перед использованием какого-либо регистра сохранить его «старое» значение в стеке, а в конце процедуры все сохраненные значения восстановить.

Например, если в процедуре будет использоваться регистр CH, то его следует сохранить в стеке, но стек запоминает только со слова, поэтому в процедуре будет фрагмент:

PUSH CX ; сохранение «старого» CX

MOV CX, 0 ; использование CX в процедуре



; перед выходом из процедуры

POP CX ; восстановление «старого» CX

Таким образом, получится обобщенная схема близкой (NEAR) процедуры с параметрами, передаваемыми через регистры и через стек


{имя проц} proc







PUSH BP для обслуживания

mov BP, SP стека







PUSH сохранение регистров,

используемых в процедуре







тело проц.







РОР ... восстановление регистров







РОР ВР восстановление BP






RET {cnt}







{имя проц} ENDP


^

Основные средства обработки программ на ЯА

Программные пакеты MASM и TASM




Процесс подготовки и отладки программы на ЯА включает в себя этапы подготовки исходного модуля (ИМ), трансляции, компоновки и отладки.

  1. ^ Подготовка исходного модуля (текста программы) может выполняться с помощью любого текстового редактора. Файл с исходным текстом должен иметь расширение .ASM.

Следует использовать редакторы, формирующие выходной файл в формате ASCII без дополнительных символов, которые вставляют специализированные текстовые редакторы (например, MS Word). Рекомендуются редакторы Norton Editor, WordPad.

При работе в интегрированных средах можно пользоваться редакторами, строенными в эти среды. Например, программные пакеты фирмы Borland, такие как C, C++, Pascal, содержат средства создания ассемблерных программ и фрагментов.

  1. Трансляция ИМ состоит в преобразовании строк исходного языка в коды машинных команд и выполняется с помощью транслятора (ассемблера).

Можно пользоваться трансляторами

MASM фирмы Microsoft или

TASM фирмы Borland.

Ассемблеры различаются в основном в чести написания макросредств, но входной язык для всех ассемблеров одинаков. После трансляции образуется объектный модуль (ОМ), т.е. файл с расширением .OBJ.

Трансляторы вызываются командами MS DOS

MASM name

TASM name

где name – имя файла ИМ без расширения.

Ассемблер формирует ОМ с тем же именем, кроме того, формируются файлы:

­­- листинга .LST (list)

- перекрестных ссылок .CRF (Cross reference).

В команде ассемблирования можно указать путь к файлу или при помощи опций трансляции внести изменения.

Например,

MASM D:\SRC\bild

Здесь обрабатывается файл bild.asm из папки SRC.

Общий вид команды ассемблирования на примере MASM:

MASM {ИМ} [,{ОМ} [,{list}[,{cross}]]] [/{опции}]

Имена {ИМ} ,{ОМ} ,{list},{cross} могут указываться без расширения или с ним; можно отменить формирование одного из файлов или их группы. Т.К. порядок файлов фиксирован, то исключение из середины списка обозначается появление двух запятых подряд, а отключение конца списка обозначается точкой с запятой. Например,

TASM FIL1

эквивалентно

TASM FIL1;

Для MASM возможны три эквивалентные записи:

MASM FIL1.asm, FIL1.obj, FIL1.lst, FIL1.crf

MASM FIL1,,,

MASM FIL1, FIL1, FIL1, FIL1

Опции управляют работой ассемблера и форматом генерируемых файлов. Опции предваряются знаком «/» или «-». Набор опций варьируется в зависимости от пакета TASM или MASM, а также от версии.

Ниже приведен список общих опций:

/А – упорядочить сегменты в алфавитном порядке

/С – формировать файл перекрестных ссылок

/L – формировать файл листинга

/ML – считать заглавные и строчные латинские буквы в именах различными

/T – отменить сообщение об успешном ассемблировании

/Zi - воспроизводить на экране ошибочные строки

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

- в MASM – в любом месте списка,

- в TASM – в начале перед списком имен.

Например,

TASM /L /Zi P,P1

Здесь обрабатывается файл P.asm, формируются файлы P.lst и P1.obj

MASM /Zi St,,Stest

Обрабатывается файл St.asm, формируется файл Stest.lst

3. Компоновка ОМ выполняется с помощью компоновщика (редактора связей), вызывается командами MS DOS

LINK name – совместимо с MASM

TLINK name – совместимо с TASM

Основное назначение – подключение к файлу с основной программой файлов с подпрограммами и настройка связей, изменение формата ОМ и преобразование его в загрузочный файл (.EXE).

Полный формат команды на примере LINK:

LINK {ОМ} [,{загр.}[,{карта}[,{библ.} ]]] [/{опции}]

где {ОМ} – имя файла или их последовательность, разделенная знаком «плюс» или пробелами;

{загр.} – имя загрузочного файла;

{карта} – имя файла, содержащего т.н. карту сборки, описывающую все общие символы, с расширением .MAP;

{библ.} - имя файла библиотеки или их последовательность, разделенная знаком «плюс» или пробелами.

Имена файлов могут указываться без расширения.

Опции в LINK и TLINK не совпадают!

Примеры:

TLINK P1;

формируются файлы P1.exe, P1.map

LINK P1;

формируется файл P1.exe

Использование опций:

^ LINK/MAP P1;

формируются файлы P1.exe, P1.map

LINK/C0 P1+P2,P3,P3,LIB1+LIB2

Компоновка и подключение библиотек, опция /C0 была рассмотрена ранее в разделе «расположение процедур».

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

После компоновки загрузочный файл с расширением .EXE можно запускать.

4. Отладчики – это специальные программы, облегчающие отладку программ на ЯА. Наибольшее распространение получили три отладчика:

Debug – отладчик, входящий в MS DOS,

CV (Code View) – фирмы Microsoft, входит в пакет MASM,

TD (Turbo Debugger) – фирмы Borland, входит в пакет TASM.

Вызов на примере Debug производится командой

Debug P[.exe]

Общее требование – наличие загрузочного файла.

Рассмотрим подробнее использование отладчиков.

а) Debug позволяет записать программу на ЯА или в машинных кодах, запускать ее в разных режимах (с точками останова или без них, а также в пошаговом режиме), просматривать области памяти, регистры и при необходимости вносить изменения;

б) Code View – интерактивный отладчик, вся работа с ним осуществляется в непрерывном диалоге с пользователем;

в) Turbo Debugger – также интерактивный отладчик.

CV и TD имеют общие свойства, а именно они:

- имеют систему многооконного изображения на экране, позволяющую при выполнении программы видеть изменение содержимого регистров МП, флагов, выбранных ячеек памяти;

- позволяют запускать программу в пошаговом режиме, по участкам или по циклам;

- позволяют в ходе отладки вносить изменения в содержимое регистров МП и областей памяти.

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




оставить комментарий
страница11/12
Дата02.10.2011
Размер0,99 Mb.
ТипКонспект, Образовательные материалы
Добавить документ в свой блог или на сайт

страницы: 1   ...   4   5   6   7   8   9   10   11   12
отлично
  1
Ваша оценка:
Разместите кнопку на своём сайте или блоге:
rudocs.exdat.com

Загрузка...
База данных защищена авторским правом ©exdat 2000-2017
При копировании материала укажите ссылку
обратиться к администрации
Анализ
Справочники
Сценарии
Рефераты
Курсовые работы
Авторефераты
Программы
Методички
Документы
Понятия

опубликовать
Загрузка...
Документы

Рейтинг@Mail.ru
наверх