1. Использование Turbo Debugger для отладки программ на ассемблере


Скачать 0.55 Mb.
Название 1. Использование Turbo Debugger для отладки программ на ассемблере
страница 6/7
Тип Документы
rykovodstvo.ru > Руководство эксплуатация > Документы
1   2   3   4   5   6   7

Операторы изменения атрибутов выражения


  1. PTR Изменение типа переменной

type PTR выражение

Временно изменяет тип выражения (которое может быть меткой или переменной) с его стандартного типа на тип type. Оператор PTR обычно используется для способа доступа к переменной, отличного от указанного при ее определении.



16.Директивы ассемблера: определение переменных, констант, определение

типов данных.

Директивы определения данных

DB Описание байта

DD Описание двойного слова

DW Описание слова. Размещает и инициализирует одно или более слов (по 2 байта) памяти.

STRUC Определение структурного типа

имя STRUC

field_Definitions

имя ENDS.

Начинает описание структурного типа. Структура может иметь любое число полей.

RECORD Описание типа записи

recordName RECORD fieldName:ширина [=выражение],,,

Определяет 8-битовый либо 16-битовый тип записи с одним и более битовыми полями указанной ширины и (необязательно) с указанным начальным значением. Параметр ширина указывает число битов от 1 до 16. Необязательный параметр "=выражение" позволяет задавать начальное значение для поля.

Директивы присваивания

EQU Создание символа

Создает абсолютные символы (имена, которые представляют 16-битные значения),

= Создание абсолютного символа

Размещения абсолютного символа в памяти не происходит. Ассемблер заменяет каждый вход абсолютного символа name на 16-тибитное числовое значение выражения. Абсолютный символ МОЖЕТ быть переопределен в любое время.
17.Директивы сегментации. Сегментная структура программ в MS-DOS.

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

Атрибут выравнивания сегмента (тип выравнивания) сообщает компоновщи-

ку о том, что нужно обеспечить размещение начала сегмента на заданной гра-

нице.

BYTE — выравнивание не выполняется. Сегмент может начинаться с любого

адреса памяти;

WORD — сегмент начинается по адресу, кратному двум, то есть последний

(младший) значащий бит физического адреса равен 0 (выравнивание по гра-

нице слова);

DWORD — сегмент начинается по адресу, кратному четырем, то есть два по-

следних (младших) значащих бита равны 0 (выравнивание по границе двой-

ного слова);

PARA — сегмент начинается по адресу, кратному 16, то есть последняя шест-

надцатеричная цифра адреса должна быть Oh (выравнивание по границе

параграфа);

PAGE — сегмент начинается по адресу, кратному 256, то есть две последние

шестнадцатеричные цифры должны быть OOh (выравнивание по границе

страницы размером 256 байт);

MEMPAGE — сегмент начинается по адресу, кратному 4 Кбайт, то есть три по-

следние шестнадцатеричные цифры должны быть OOOh (адрес следующей

страницы памяти размером 4 Кбайт).

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

и то же имя.

PRIVATE — сегмент не будет объединяться с другими сегментами с тем же

именем вне данного модуля;

PUBLIC — заставляет компоновщик объединить все сегменты с одинаковым

именем. Новый объединенный сегмент будет целым и непрерывным. Все

адреса (смещения) объектов, а это могут быть, в зависимости от типа сег-

мента, команды или данные, будут вычисляться относительно начала этого

нового сегмента;

COMMON — располагает все сегменты с одним и тем же именем по одному

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

ченного в результате сегмента будет равен размеру самого большого сегмента;

STACK — определение сегмента стека. Заставляет компоновщик объединить

все одноименные сегменты и вычислять адреса в этих сегментах относитель-

но регистра SS.

Атрибут класса сегмента (тип класса) — это заключенная в кавычки строка,

помогающая компоновщику определить нужный порядок следования сегмен-

тов при сборке программы из сегментов нескольких модулей.

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

18.Упрощенные (точечные) директивы сегментации. Стандартные модели

памяти.

Директива указания модели памяти MODEL связывает сегменты, которые при

наличии упрощенных директив сегментации имеют предопределенные имена,

с сегментными регистрами. Обязательным параметром директивы MODEL является модель_памяти.




19.Объявление и использование макрокоманд. Управление аргументами

макрокоманд.

Макроопределение - это способ дать имя фрагменту кода. После того как макрос определен, программист может вместо фрагмента кода писать имя макроса. В сущности, макрос - это просто имя фрагмента кода.

Хотя в разных языках ассемблера определение макроса выглядит немного по-разному, во всех оно состоит из одних и тех же базовых частей:

+ заголовок макроса, в котором дается имя определяемого макроса;

+ текст, в котором приводится тело макроса;

+ директива, которая завершает определение (например, ENDM).

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

Макрорасширение происходит в ходе ассемблирования, а не во время выполнения программы.

Макровызовы не следует путать с вызовами процедур. Основное отличие состоит в том, что макровызов - это команда ассемблеру заменить имя макроса телом макроса. Вызов процедуры - это машинная команда, которая, будучи вставлена в объектную программу, позднее должна быть выполнена для вызова процедуры.

Управление параметрами:

& Оператор подстановки

&dummyparameter или dummyparameter&

Заставляет ассемблер заменить подставной параметр dummyparameter на значение фактического параметра в тексте макроопределения.

< > Оператор буквального прочтения текста

<�текст>

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

! Оператор буквальной интерпретации символа

!символ

Заставляет ассемблер интерпретировать символ буквально. эквивалентно <�символ>;

% Оператор преобразования в выражение

%текст

Интерпретирует текст как выражение. Макроассемблер вычислит значение этого выражения в текущей системе счисления и заменит текст на это значение.

;; Макрокомментарий

;;текст_комментария

Позволяет включать комментарий в макроопределение таким образом, что он удаляется при макрорасширении.

Директивы:

MACRO Начало описания макрокоманды

имя MACRO [dummyparameter,,,]

команды

ENDM

Начинает описание макрокоманды, состоящей из имени и внутренних команд. Имя должно быть правильным и уникальным. Может быть объявлено любое число формальных параметров (dummyparameter), но они должны все стоять в одной строке.

ENDM Конец макроопределения или повторного блока

1. имя MAKRO [формальный_параметр,,,]

2. REPT выражение

3. IRP формальное_имя,<�параметр,,,>

4. IRPC формальное_имя,строка

LOCAL Объявление символа для использования в Макросе

LOCAL dummyname,,,

Создает уникальные символьные имена, используемые в макросах. Когда макрос раскрывается, dummyname (формальное имя) заменяется символом следующим образом:

??number,

где number - шестнадцатеричное число в пределах от 0 до FFFFh.

EXITM Немедленный выход из макро

EXITM

Влечет немедленный выход из макро (MACRO) или повторного блока (REPT) и возвращает управление оператору, следующему за оператором вызова макро или повторного блока.

PURGE Удаление описания Макроса

PURGE macroname,,,

Удаляет одно и более макроопределений, освобождая память.
20.Макрокоманды повторения. Директивы условной трансляции.

Макрокоманды повторения.

Директивы повторения заставляют ассемблер повторить блок

операторов, завершаемых директивой ENDM. Эти директивы не

обязательно должны находится в макроопределении, но если они

там находятся,

то одна директива ENDM

требуется для

завершения повторяющегося блока,

а вторая ENDM - для

завершения макроопределения.

REPT: Повторение

Операция REPT приводит к повторению блока операторов до

директивы ENDM в соответствии с числом повторений, указанным

в выражении:

REPT выражение

IRP: Неопределенное повторение

Операция IRP приводит к повторению блока команд до

директивы ENDM. Основной формат:

IRP dummy,

Аргументы, содержащиеся в угловых скобках, представляют

собой любое число правильных символов, строк, числовых или

арифметических констант. Ассемблер генерирует блок кода для

каждого аргумента.

IRPC: Неопределенное повторение символа

Операция IRPC приводит к повторению блока операторов до

директивы ENDM. Основной формат:

IRPC dummy,string

Ассемблер генерирует блок кода для каждого символа в строке

"string".

Директ.условной трансляции.

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

Директивы IF и IFE — условная трансляция по результату вычисления логического выражения.

Директивы IFDEF и IFNDEF — условная трансляция по факту определения символического имени.

Директивы IFB и IFNB — условная трансляция по факту определения фактического аргумента при вызове макрокоманды.

Директивы IFIDN, IFIDNI, IFDIF и IFDIFI — условная трансляция по результату сравнения строк символов.

21.Организация процедур. Способы передачи параметров.

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

для передачи управления процедуре используется команда CALL. При достижении команды RET, находящейся в процедуре, управление передается команде, непосредственно идущей за командой CALL.

Способы передачи параметров.

1). Передача параметров через регистры общего назначения.

Достоинства: быстрый и удобный;

Недостатки: ограничен в размерах (не более 5).

Применение: написание операционных систем (печать строки. и др.).

2). Передача через общую область памяти. (общие переменные)

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

в вызывающей:

PUBLIC список имен (имена переменных или меток).

В вызываемой процедуре:

EXTERN {имя параметра, тип}

3). Передача параметров через стек.

Такой метод применим не только между ассемблерными модулями, но и с разными языками. STDCALL- стандартная взаимосвязь процедур по параметрам. Основным средством доступа к параметрам является BP, для которого:

его значение при запуске процедуры сохраняется в стеке;

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

22.Взаимодействие процедур, созданных в разных программных модулях.

Библиотеки объектных модулей.

Для того чтобы объявить о подобного рода видимых извне объектах, программа должна использовать две директивы TASM: extrn и public.

Директива extrn предназначена для объявления некоторого имени внешним по отношению к данному модулю. Это имя в другом модуле должно быть объявлено в директиве public. Директива public предназначена для объявления некоторого имени, определенного в этом модуле, и видимом в других модулях. Синтаксис этих директив следующий:

extrn имя: тип,..., имя: тип

public имя,... ,имя

Здесь имя - идентификатор, определенный в другом модуле. В качестве идентификатора могут выступать:

• имена переменных, определенных директивами типа db, dw и т. д.;

• имена процедур;

• имена констант, определенных операторами = и equ.

Тип определяет тип идентификатора. Указание типа необходимо, для того, чтобы транслятор правильно сформировал соответствующую машинную команду.

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

• если имя - это имя переменной, то тип может принимать значения byte, word, dword, pword, fword, qword и tbyte;

• если имя - это имя процедуры, то тип может принимать значение near или far;

• если имя - это имя константы, то тип должен быть abs.

Библиотеки объектных модулей.

Для решения проблем, возникающих при поддержании порядкав наборах из большого количества объектных модулей, еще на заревычислительной техники были придуманы библиотеки объектных модулей.

Библиотека, как правило, представляет последовательный файл,состоящий из заголовка, за которым последовательно уложены объектные модули.В заголовке содержится следующая информация:

Список всех объектных модулей, со смещением каждого модуля отначала библиотеки. Это нужно для того, чтобы можно было легко найтитребуемый модуль.

Список всех глобальных символов, определенных в каждом из модулей,с указанием, в каком именно модуле он был определен.

Линкер обычно собирает в программу все объектные модули,которые были ему заданы в командной строке, даже если на этот модульне было ни одной ссылки.С библиотечными модулями он ведет себя несколько иначе.
lib.exe – для работ с библиотеками *.lib

LIB.EXE /LIST LIBC.LIB>1 -просмотр всех объектных модулей в библиотеке

LIB.EXE /EXTRACT:build\intel\st_obj\crt0init.obj LIBC.lib –извлечение

23.Организация ввода с клавиатуры, использование функций BIOS и DOS

для ввода с клавиатуры.

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

Различные служебные функции DOS для работы с буфером клавиатуры (функции 01h, 06h, 07h, 08h, 0Ah, 0Bh и 0Ch) классифицируются прежде всего по трем критериям: ожидают ли они ввода или же, когда символ не получен, сообщают, что ввода нет; выдают ли они на экран дисплея эхо (введенный символ); и реагирует ли функция на ввод стандартного символа прерывания во время ее исполнения.

Все функции ввода с клавиатуры получают введенный символ из буфера клавиатуры, размещенного в памяти компьютера, а не непосредственно из порта 60h интерфейса клавиатуры (из порта 60h скан-коды считываются прерыванием 09h, переводятся в коды символов и помещаются в буфер клавиатуры)

Прерывание 21h, номер функции в регистре ah

Функция 1: ввод символа с клавиатуры с эхом, ожиданием нажатия клавиши.

ASCII код символа возвращается в al. Для специальных клавиш al=0. Повторный вызов функции возвращает скэн-код.

Функция 7: ввод с клавиатуры без эха с ожиданием.

ASCII код символа возвращается в al. Для специальных клавиш al=0. Повторный вызов функции возвращает скэн-код.

Функция 0Аh: ввод строки с клавиатуры с ожиданием и эхом. Адрес буфера ввода - ds:dx, первый байт буфера - его размер, второй – число реально введенный байтов. Окончание ввода – Enter (0Dh)

Прерывание 16h, номер функции в регистре ah.

Функция 0: чтение символа с ожиданием

Если нажатой клавише соответствует ASCII –символ, то в al - код этого символа, в ah – скан-код клавиши;

Если нажатой клавише соответствует расширенный ASCII-код, то в al – префикс скан-кода или 0 , если префикса нет, в ah – расширенный ASCII –код.

Функция 1: проверка символа в буфере клавиатуры (без ожидания)

Выход:zf=1 буфер пуст

zf=0 в буфере присутствует символ,

в al - код этого символа, 0 или префикс скан-кода

в ah – скан-код клавиши или расширенный ASCII –код

Функция 2: считать состояние клавиатуры.

Выход: al – байт состояния клавиатуры (байт расположен в памяти по адресу 0:417h); бит 0: правая Shift нажата, бит 1: левая Shift нажата, бит 2: любая Ctrl нажата, бит 3: любая Alt нажата, бит 4: ScrollLock включена, бит 5: NumLock включена, бит 6: CapsLock включена, бит 7: Ins включена.
1   2   3   4   5   6   7

Похожие:

1. Использование Turbo Debugger для отладки программ на ассемблере icon Визуальные средства создания, отладки и анализа программ для параллельных вычислений

1. Использование Turbo Debugger для отладки программ на ассемблере icon Руководство пользователя «dymo label Software»
Модели: «LabelWriter» 300, 310, 320, 330, 330 Turbo, 400, 400 Turbo, Twin Turbo, Duo
1. Использование Turbo Debugger для отладки программ на ассемблере icon Техническое задание на проведение открытого запроса предложений по...
Общество с ограниченной ответственностью «Судостроительный комплекс «Звезда» (ооо «сск «Звезда») (далее – Лицензиат), проводит закупку...
1. Использование Turbo Debugger для отладки программ на ассемблере icon 1 цель работы
Целью работы является освоение инструментальных средств создания и отладки программ на языке ассемблера
1. Использование Turbo Debugger для отладки программ на ассемблере icon Инструкция по применению автомобильного трансивера Си-Би диапазона...
Кнопка c быстрый переход в 9-й канал. В многосеточном режиме служит для переключения сеток
1. Использование Turbo Debugger для отладки программ на ассемблере icon Использование общеразвивающих компьютерных игр и программ в работе с детьми с овз
Особое место среди компьютерных программ занимают специализированные программы для детей с различными нарушениями развития
1. Использование Turbo Debugger для отладки программ на ассемблере icon Дипломная работа тема: использование flash технологий при разработке сайта
В последние годы мультимедиа стало образом жизни для многих пользователей компьютеров, сделав программы и игры более интересными...
1. Использование Turbo Debugger для отладки программ на ассемблере icon Техническое задание На предоставление права на использование по редактирования...
На предоставление права на использование по редактирования и визуализации управляющих программ для станков с чпу на условиях простой...
1. Использование Turbo Debugger для отладки программ на ассемблере icon Руководство пользователя «Интернет-Банк»
Объем памяти и свободного дискового пространства, отсутствие установленных на пэвм клиента средств разработки и отладки и др программ...
1. Использование Turbo Debugger для отладки программ на ассемблере icon Это один из самых простых языков, но далеко не один из самых слабых....
Программы на Turbo Pascal пишутся только для платформы ms-dos, но никак не зависят от конфигурации компьютера. Главным требованием...
1. Использование Turbo Debugger для отладки программ на ассемблере icon Инструкция по участию в открытом Запросе предложений 11 Общий порядок...
Лот №1: Передача неисключительных прав на использование программ для ЭВМ и поставка Товара
1. Использование Turbo Debugger для отладки программ на ассемблере icon Котировочная заявка
О. (для физического лица); место нахождения (для юридического лица), место жительства (для физического лица); банковские реквизиты),...
1. Использование Turbo Debugger для отладки программ на ассемблере icon Инструкция по применению автомобильного трансивера Си-Би диапазона...
Регулятор vr. Предназначен для включения/выключения радиостанции и регулировки громкости
1. Использование Turbo Debugger для отладки программ на ассемблере icon Практическая работа 8
Целью работы является закрепление теоретических знаний по разделу «архитектура набора команд» компьютера и получение практических...
1. Использование Turbo Debugger для отладки программ на ассемблере icon Сборник тестов «Структуры данных в языке Turbo Pascal» по дисциплине «Основы программирования»

1. Использование Turbo Debugger для отладки программ на ассемблере icon Доклад о ходе реализации и оценке эффективности муниципальных Программ...
Программ, представленных администраторами Программ в соответствии с Порядком разработки, реализации и оценки эффективности муниципальных...

Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск