- •Таганрог 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. Контрольные вопросы
- •БиблиографИя
- •Содержание
- •Заметки
- •Дроздов Сергей Николаевич Калачев Дмитрий Петрович
–
УДК 681.3.06(07)
П784 № 1993
Министерство общего и профессионального образования Российской федерации
Таганрогский государственныЙ радиотехнический университет
Таганрог 1997 Методическая разработка к лабораторным работам Программирование на языке ассемблера пэвм ibm pc
ФАВТ
Составители: С.Н.Дроздов, Д.П.Калачев
УДК 681.3.062(076.5)
Методическая разработка к лабораторным работам «Программирование на языке ассемблера ПЭВМ IBM PC». Таганрог: Изд-во ТРТУ. 1997. 58 с.
Приводятся описания восьми лабораторных работ, посвященных основам программирования на языке ассемблера IBM PC. Рассмотрены вопросы программирования линейных, циклических и условных алгоритмов, создания подпрограмм и макрокоманд. Приведены описания системы команд и директив ассемблера, даны варианты заданий и примеры выполнения лабораторных работ.
Табл.5. Библиогр.: 7 назв.
Рецензент В.И.Цехоня, канд. техн. наук, доцент кафедры ВТ ТРТУ.
Введение
В данном руководстве содержатся все сведения о системе команд, директивах языка ассемблера, системе программирования TASM, операционной системе MS-DOS, необходимые для выполнения работ. Однако эти сведения не претендуют на полноту описания, поэтому данное руководство лучше использовать как практическое дополнение к другим источникам информации о языке ассемблера ПЭВМ IBM PC.
Структура описания лабораторной работы
Описание каждой работы состоит из следующих разделов:
цель работы – кратко излагается основная цель работы и перечисляются ожидаемые результаты;
основные сведения – приводятся минимальный объем сведений, необходимых для выполнения работы;
пример выполнения работы – приводится типовое задание и программа, реализующая поставленную задачу. Пример можно рассматривать как шаблон выполнения соответствующей работы;
варианты заданий;
контрольные вопросы – перед защитой работы рекомендуется попытаться ответить на все поставленные вопросы.
Выполнение работы
При выполнении каждой работы следует руководствоваться следующей последовательностью шагов:
прочесть описание и разобрать предложенный пример;
написать программу(ы) согласно варианту задания;
создать с помощью текстового редактора файл с текстом программы(ы);
оттранслировать программу(ы), добиться отсутствия ошибок трансляции;
запустить и отладить программу при нескольких наборах исходных данных;
ответить на контрольные вопросы.
ФОРМА ОТЧЕТА
Отчет по лабораторной работе должен включать:
вариант задания;
тексты программ (желательно в виде листинга трансляции);
исходные данные и результаты выполнения программы для нескольких наборов данных.
Лабораторная
работа
1
Разработка и отладка программ на языке ассемблера
1. ЦЕЛЬ РАБОТЫ
Цель настоящей работы – выработка навыков подготовки и трансляции программ на языке ассемблера в операционной системе MS-DOS и отладки программ с использованием отладчика.
2. ОСНОВНЫЕ СВЕДЕНИЯ
2.1. Запись программ на языке ассемблера
Программа на языке ассемблера представляет собой текст, разбитый на строки. Каждая строка либо соответствует машинной команде, либо является директивой ассемблера или макрокомандой. Команды и директивы можно набирать как заглавными, так и строчными латинскими буквами. Русские буквы можно использовать только в комментариях.
Строка программы в общем случае состоит из четырех полей: поля метки или имени, поля операции, поля операндов и поля комментария.
Поля удобно разделять табуляцией.
Имена данных, процедур, сегментов или метки команд могут состоять не более чем из 255 латинских буквы или цифр, причем первым символом должна быть обязательно буква. По умолчанию в имени значащими являются первые 32 символа. Заглавные и строчные буквы могут ассемблером различаться или не различаться (ключи: /ML, /MU и /MX). Метки машинных команд должны заканчиваться символом двоеточия.
При трансляции каждому имени ставится в соответствие ряд атрибутов.
Поле операции содержит мнемокод машинной команды, директивы или макрокоманды. Заглавные и строчные буквы в мнемокоде операции ассемблером не различаются.
Поле операндов служит для записи операндов, если они требуются.
Если операндов несколько они, как правило, разделяются запятыми.
Поле комментариев служит для пояснений к командам. Это поле не обязательно. Комментарий начинается с символа точка с запятой и заканчивается с концом строки.
В программах на языке ассемблер допустимы несколько типов констант:
десятичные – последовательность цифр от 0 до 9;
шестнадцатеричные – последовательность шестнадцатеричных цифр от 0 до 9 и от A или a до F или f, завершающаяся буквой H или h, первой должна быть десятичная цифра;
восьмеричные – последовательность цифр от 0 до 7, завершающаяся буквами Q, q, O или o;
двоичные – последовательность цифр 0 или 1, завершающаяся буквой B или b.
Ниже приведена типичная структура простой программы на ассемблере.
model SMALL
stack 100h
dataseg
. . . ;данные
codeseg
startupcode
. . . ;код
QUIT: exitcode 0
end
Директивы stack, dataseg и codeseg служат для выделения сегментов.
Макрокоманда startupcode содержит инициализирующий код, который обеспечивает загрузку сегментных регистров DS и SS.
Макрокоманда exitcode <код возврата> осуществляет завершение выполнения программы и передачу управления ОС. Необязательный параметр <код возврата> служит для возврата значения, которое можно проверить в командных файлах ОС.
Директива end <метка точки входа> отмечает конец текста программы и указывает ассемблеру, где завершить трансляцию. Поэтому директива end должна присутствовать в каждой программе. Необязательный параметр <метка точки входа> указывает инструкцию, с которой должно начинаться выполнение программы.
Директивы
<имя> DW <выражение>,<выражение>,... и
<имя> DB <выражение>,<выражение>,...
служат для определения данных, слов или байтов, соответственно.
<выражение> может быть константой или, если значение не определено, можно использовать символ вопросительного знак.
Конструкция <число> dup (<выражение>,<выражение>,...) используется для повторения последовательности выражений в скобках заданное <число> раз.