- •Таганрог 1997 Методическая разработка к лабораторным работам Программирование на языке ассемблера пэвм ibm pc
- •Введение
- •Структура описания лабораторной работы
- •Выполнение работы
- •Разработка и отладка программ на языке ассемблера
- •2.2. Обработка программ в dos
- •Трансляция программы
- •Компоновка программы
- •Запуск программы
- •2.3. Использование отладчика td
- •Как запустить программу под отладчиком
- •Что умеет и чего не умеет отладчик td
- •Меню View Окно Module
- •Окно cpu
- •Окно Watches
- •Окно Dump
- •Экран пользователя
- •Команда Instruction Trace
- •Команда Program Reset
- •3. Пример выполнения работы
- •4. Контрольные вопросы
- •2.2. Режимы адресации
- •3. Пример выполнения работы
- •4. Варианты заданий
- •5. Контрольные вопросы
- •Лабораторная работа
- •Циклические и разветвляющиеся программы1. Цель работы
- •2. Основные сведения
- •3. Пример выполнения работы
- •4. Варианты заданий
- •5. Контрольные вопросы
- •Лабораторная работа
- •Логические команды1. Цель работы
- •2. Основные сведения
- •2.1. Логические команды
- •2.2. Примеры использования логических команд
- •3. Пример выполнения работы
- •4. Варианты заданий
- •5. Контрольные вопросы
- •Лабораторная работа
- •Символьная обработка1. Цель работы
- •2. Основные сведения
- •2.1. Программные прерывания и системные вызовы
- •2.2. Функции dos для ввода с клавиатуры
- •2.3. Функции dos для вывода на экран
- •3. Пример выполнения работы
- •Inpstr db 80, ?, 82 dup( ? ) ; буфер ввода
- •Inc count[si] ;увеличиваем соответств. Счетчик
- •Xor si, si ;Счетчик цифр
- •Int 21h ; строки
- •Inc si ;Счетчик очередной цифры
- •4. Варианты заданий
- •5. Контрольные вопросы
- •Лабораторная работа
- •Десятичная арифметика
- •2.3. Команды десятичной коррекции неупакованных чисел
- •3. Пример выполнения работы
- •4. Варианты заданий
- •5. Контрольные вопросы
- •Лабораторная работа
- •Подпрограммы1. Цель работы
- •2. Основные сведения
- •2.1. Описание подпрограмм
- •2.2. Вызов подпрограмм
- •2.3. Передача параметров
- •2.4. Сохранение регистров
- •2.5. Локальные переменные
- •2.6. Директивы описания сегментов и модели памяти Модели памяти
- •Директивы определения сегментов
- •Макрокоманды начала и завершения программы
- •2.7. Расширенные директивы описания процедур
- •2.8. Область действия имен
- •2.9. Итоги
- •3. Пример выполнения работы
- •Int 21h ;Приглашение к вводу строки
- •Int 21h ;Ввод строки
- •Int 21h ; позиции удаления
- •Int 21h ;Ввод строки числа
- •Int 21h ; числа удаляемых
- •Int 21h ;Ввод строки числа удаляемых
- •Int 21h ;Заголовок вывода
- •Inc bx ;Сдвиг по строке
- •Int 21h ; Вывод результата
- •Inc bx ;Сдвиг по строке
- •4. Варианты заданий
- •5. Контрольные вопросы
- •Лабораторная работа 8 Использование подпрограмм на языке ассемблера в программах на языках c и pascal1. Цель работы
- •2. Основные сведения
- •2.1. Введение
- •2.2. ТерминЫ и сокращения
- •2.3. Соглашения о связях
- •Преобразование имен
- •Передача и возврат управления и данных
- •Сохранение регистров
- •Трансляция и компоновка
- •Преобразование данных
- •Трансляция и компоновка
- •3. Пример выполнения работы
- •3.1. Интерфейс Pascal
- •Inc si ;указатель на входную строку
- •Inc cx ;нет, увеличиваем счетчик символов
- •Inc dx ;да, увеличиваем счетчик строк
- •Inc dx ;нет, будем увеличивать счетчик строк
- •4. Варианты заданий
- •5. Контрольные вопросы
- •БиблиографИя
- •Содержание
- •Заметки
- •Дроздов Сергей Николаевич Калачев Дмитрий Петрович
5. Контрольные вопросы
Что такое «ближние» и «дальние» подпрограммы?
Как определяется, «ближний» или «дальний» вариант команды call использован в программе?
Какие еще способы передачи параметров можно предложить, кроме двух, описанных в данной работе?
Может ли массив быть параметром процедуры?
Нельзя ли адресовать параметры в стеке через регистр SP, не используя BP?
Что и как нужно изменить в программе из примера, если используется версия ассемблера, не поддерживающая понятие структуры?
Изменить описание подпрограммы из примера с использованием упрощенных директив описания подпрограмм.
Что означает операнд команды ret?
Какой последовательностью команд можно было бы заменить команду ret 6?
Лабораторная работа 8 Использование подпрограмм на языке ассемблера в программах на языках c и pascal1. Цель работы
Цель настоящей работы – выработка навыков подготовки разноязыковых программ в операционной системе MS-DOS.
2. Основные сведения
2.1. Введение
Каждый язык программирования обладает своими достоинствами и недостатками. Поэтому при разработке больших проектов может возникнуть необходимость написания отдельных частей программы на различных языках программирования, например:
вся программа на каком-либо языке высокого уровня (ЯВУ), а для доступа к нестандартной аппаратуре или нестандартного доступа к стандартной требуется написание подпрограмм на языке ассемблера;
в программе на ЯВУ необходимо повысить эффективность выполнения какого-либо фрагмента и для этого переписать его на языке ассемблера;
необходимо использовать библиотеку подпрограмм, написанную на языке, отличном от языка разрабатываемой программы.
Вся конкретная информация и примеры рассмотрены для системы программирования (СП) Borland C++ Version 3.1 и Borland Pascal Version 6.0 фирмы Borland International, Inc. и ориентированы на программирования в DOS.
2.2. ТерминЫ и сокращения
Подпрограмма – фрагмент программы, оформленный таким образом, что к нему можно обращаться (вызывать) из других фрагментов программы и возвращаться в точку вызова. При вызове подпрограммы ей можно передавать параметры и она может возвращать значение.
Процедура – подпрограмма, не возвращающая значения (см. процедуры Паскаля).
Функция – подпрограмма, возвращающая значение (см. функции Паскаля или Си).
Параметр – фрагмент данных, передаваемый подпрограмме, и возможно, изменяемый ею. Внешние (глобальные) данные параметрами не являются.
Формальный параметр – обозначение (идентификатор) параметра в подпрограмме.
Фактический параметр – выражение или идентификатор переменной, подставляемый при обращении (вызове) подпрограммы.
Прототип подпрограммы – описание заголовка подпрограммы с описанием формальных параметров.
Основной язык – язык, на котором написана вызывающая программа, язык подпрограммы – язык, на котором написана подпрограмма.
Сокращения:
СП – система программирования
ЯП – язык программирования
ЯВУ – язык программирования высокого уровня
ИМ – исходный модуль
ОМ – объектный модуль
2.3. Соглашения о связях
Вообще говоря, для каждого транслятора с языка высокого уровня существует свое собственное соглашение о связях между подпрограммами. То есть соглашение о том, в какие машинные команды и конструкции языка ассемблера транслируются операторы языка высокого уровня, служащие для описания и вызова подпрограмм.
Понятие «соглашение о связях» включает следующие аспекты: преобразование имен подпрограмм и переменных, передача и возврат управления, передача и возврат данных, преобразование данных при передаче и возврате, трансляция и компоновка подпрограмм в единую программу.