Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Пример программы на Ассемблере




TITLE EX_PROG

PAGE,132

STACK SEGMENT PARA STACK ‘STACK’

DB 64 DUP(‘STACK ’); Область стека

STACK ENDS

DSEG SEGMENT PARA PUBLIC ‘DATA’

SOURCE DB 10,20,30,40; эта таблица будет скопирована

DEST DB 4 DUP(?); в эту таблицу в обратном порядке

DSEG ENDS

SUBTTL ОСНОВНАЯ ПРОГРАММА

PAGE

CSEG SEGMENT PARA PUBLIC ‘CODE’

ASSUME CS:CSEG, DS:DSEG, SS:STACK

OUR_PROG PROC FAR

;занести в стек такие начальные значения, чтобы программа

; могла возвратить управление отладчику

PUSH DS; поместить в стек номер блока адреса возврата

SUB AX,AX; обнулить регистр АХ, тоже можно сделать командой MOV AX,0

PUSH AX; поместить в стек значение адреса возврата=0

; инициировать адрес сегмента данных

MOV AX,DSEG

MOV DS,AX

; присвоить элементам таблицы DEST нулевые начальные значения

MOV DEST,0; обнуление 1-ого байта

MOV DEST+1,0; обнуление 2-ого байта

MOV DEST+2,0; обнуление 3-его байта

MOV DEST+3,0; обнуление 4-ого байта

; скопировать таблицу SOURCE в таблицу DEST в обратном порядке, в качестве промежуточной ячейки пересылки использовать регистр AL

MOV AL, SOURCE

MOV DEST+3,AL

MOV AL, SOURCE+1

MOV DEST+2,AL

MOV AL, SOURCE+2

MOV DEST+1,AL

MOV AL, SOURCE+3

MOV DEST,AL

RET; возврат управления отладчику db

OUR_PROG ENDP

CSEG ENDS

END OUR_PROG

 

Опции транслятора TASM и редактора связей TLINK

 

В данном разделе приведены опции командной строки:

· для транслятора Turbo Assembler фирмы Borland (TASM) (версия 3.0 и выше);

· редактора связей TLINK.

Во избежание несовместимости используйте программы TLINK и TASM одной версии.

Опции транслятора TASM

/a, /s /a — сегменты в объектном файле должны быть размещены в алфавитном порядке; /s — сегменты в объектном файле следуют в порядке их описания в программе
/c Указание на включение в файл листинга с информацией о перекрестных ссылках
/dимя_иденти- фикатора [=значение] Определяет идентификатор. Это эквивалент директивы ассемблера =, как если бы она была записана в начале исходного текста программы
/e, /r /e — генерация инструкций эмуляции операций с плавающей точкой; /r — разрешение трансляции действительных инструкций с плавающей точкой, которые должны выполняться реальным арифметическим сопроцессором
/h, /? Вывод на экран справочной информации. Это эквивалентно запуску TASM без параметров
/iпуть Задает путь к включаемому по директиве INCLUDE файлу. Синтаксис аргумента “путь” такой же, как для команды PATH файла autoexec.bat
/jдир-ва_TASM Определяет директивы, которые будут транслироваться перед началом трансляции исходного файла программы на ассемблере. В директиве не должно быть аргументов
/khn Задает максимальное количество идентификаторов, которое может содержать исходная программа, то есть фактически задается размер таблицы символов транслятора. По умолчанию программа может содержать до 16384 идентификаторов. Это значение можно увеличить (но не более чем до 32 768) или уменьшить до n. Сигналом к тому, что необходимо использовать данный параметр, служит появление сообщения “Out of hash space” (“Буферное пространство исчерпано”)
/l, /la /l — указывает на необходимость создания файла листинга, даже если он не “заказывается” в командной строке; /la — показать в листинге код, вставляемый транслятором для организации интерфейса с языком высокого уровня по директиве MODEL
/ml, /mx, /mu /ml — различать во всех идентификаторах прописные и строчные буквы; /mx — различать строчные и прописные символы во внешних и общих идентификаторах. Это важно при компоновке с программами на тех языках высокого уровня, в которых строчные и прописные символы в идентификаторах различаются; /mu — воспринимать все символы идентификаторов как прописные
/mvn Определение максимальной длины идентификаторов. Минимальное значение n равно 12
/mn Установка количества (n) проходов транслятора TASM. По умолчанию транслятор выполняет один проход. Максимально при необходимости можно задать выполнение до 5 проходов
/n Не выдавать в файле листинга таблицы идентификаторов (в таких таблицах содержатся все имена идентификаторов и их значения)
/os, /o, /op, /oi Генерация оверлейного кода
/p Проверять наличие кода с побочными эффектами при работе в защищенном режиме
/q Удаление из объектной программы лишней информации, ненужной на этапе компоновки
/t Подавление вывода всех сообщений при условном ассемблировании, кроме сообщений об ошибках (то есть тестирование программы на предмет выявления синтаксических ошибок)
/w0, /w1, /w2 Генерация предупреждающих сообщений разного уровня полноты: w0 — сообщения не генерируются; w1, w2 — сообщения генерируются
/w-xxx, /w+xxx Генерация предупреждающих сообщений класса xxx (эти же функции выполняют директивы WARN и NOWARN). Знак “-” означает “запретить генерацию сообщений класса xxx”. Знак “+” означает “разрешить генерацию сообщений класса xxx”. Классы предупреждающех сообщений обозначаются идентификатором из трех символов: ALN — выравнивание сегмента в памяти; ASS — подразумевается использование 16-разрядного сегмента; BRK — требуются квадратные скобки; ICG — неэффективная генерация кода; LCO — переполнение счетчика адреса; OPI — открытый блок условия IF; OPP — открытая процедура; OPS — открытый сегмент; OVF — арифметическое переполнение; PDC — конструкция, зависящая от прохода; PRO — запись в память в защищенном режиме требует переопределения регистра CS. Использование этого класса предупреждений имеет смысл при написании программ, работающих в защищенном режиме (под Windows). На уроке 16 обсуждался момент, связанный с тем, что в защищенном режиме запрещено производить запись в сегмент кода. Класс предупреждений PRO призван уже на стадии трансляции программы предупредить такого рода ошибки; RES — предупреждение о резервируемом слове; TPI — предупреждение о недопустимости в Turbo Pascal; /W+ — разрешить все сообщения; /W– — запретить все сообщения
/x Включить в листинг все блоки условного ассемблирования для директив IF, IFNDEF, IFDEF и т. п., в том числе и невыполняющиеся
/z При возникновении ошибок наряду с сообщением о них выводить соответствующие строки текста
/zi, /zd, /zn /zi — включить в объектный файл информацию для отладки; /zd — поместить в объектный файл информацию о номерах строк, что необходимо для работы отладчика на уровне исходного текста программы; /zn — запретить помещение в объектный файл отладочной информации.
Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...