- •Таганрог 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. Контрольные вопросы
- •БиблиографИя
- •Содержание
- •Заметки
- •Дроздов Сергей Николаевич Калачев Дмитрий Петрович
4. Контрольные вопросы
Назначение программы TASM.
Назначение программы TLINK.
Что содержится в файлах *.ASM, *.OBJ, *.LST, *.MAP ?
Назначение программы TD.
Какие команды и окна отладчика служат для просмотра и модификации памяти ?
Какие команды и окна отладчика служат для просмотра регистров ?
Какие команды отладчика служат для выполнения программы?
Что такое точки останова ?
Лабораторная
работа
2
ПРОГРАММИРОВАНИЕ
ЛИНЕЙНЫХ КОНСТРУКЦИЙ
1. ЦЕЛЬ РАБОТЫ
Цель настоящей работы – освоение арифметических команд, программирование формул на языке ассемблера.
2. ОСНОВНЫЕ СВЕДЕНИЯ
2.1. Команды двоичной арифметики
МНЕМОКОД |
OSZAPC |
ДЕЙСТВИЕ |
mov DST, SRC |
------ |
пересылка, DSTSRC |
xchg OPND1,OPND2 |
------ |
обмен, DSTSRC |
add DST, SRC |
xxxxxx |
сложение, DSTDST+SRC |
adc DST, SRC |
xxxxxx |
сложение с переносом, DSTDST+SRC+CF |
inc OPND |
xxxxx- |
увеличить на единицу, OPNDOPND+1 |
sub DST, SRC |
xxxxxx |
вычитание, DSTDST-SRC |
sbb DST, SRC |
xxxxxx |
вычитание с заемом, DSTDST-SRC-CF |
dec OPND |
xxxxx- |
уменьшение на единицу, OPNDOPND-1 |
neg OPND |
xxxxxx |
изменение знака, OPND0-OPND |
rcl DST, CONT |
x----x |
циклический сдвиг влево через CF |
rcr DST, CONT |
x----x |
циклический сдвиг вправо через CF |
rol DST, CONT |
x----x |
циклический сдвиг влево |
ror DST, CONT |
x----x |
циклический сдвиг вправо |
sal DST, CONT |
xxxuxx |
арифметический сдвиг влево |
sar DST, CONT |
xxxuxx |
арифметический сдвиг вправо |
shl DST, CONT |
xxxuxx |
логический сдвиг влево |
shr DST, CONT |
xxxuxx |
логический сдвиг вправо |
2.2. Режимы адресации
Обозначения: R – регистр, V – переменная, C – константа.
НАЗВАНИЕ |
ОБОЗНАЧЕНИЕ |
СОДЕРЖАНИЕ |
ПРИМЕР |
РЕГИСТРОВАЯ ПРЯМАЯ |
R |
операнд находится в регистре |
mov AX, SI переслать содержимое регистра SI в регистр AX |
НЕПОСРЕДСТВЕННАЯ |
C |
непосредственный операнд - константа присутствует в команде |
mov AX, 093Ah занести константу 093Ah в регистр AX |
ПРЯМАЯ |
V + C или V - C |
исполнительный адрес операнда присутствует в команде |
mov BX, WW+2 переслать в BX слово памяти, отстоящее от переменной с именем WW на 2 байта |
КОСВЕННАЯ РЕГИСТРОВАЯ |
[R] где R - BP, BX, SI, DI |
регистр содержит адрес операнда |
mov [BX], CL переслать содержимое регистра CL по адресу, находящемуся в регистре BX |
КОСВЕННАЯ РЕГИСТРОВАЯ ОТНОСИТЕЛЬНАЯ |
V[R] , C[R] , [R+V] , [R+C] , V.[R] , [R].C] , где R - SI,DI (ИНДЕКСНАЯ) BX,BP (БАЗОВАЯ) |
адрес операнда вычисляется как сумма содержимого регистра и смещения |
mov M[BX], CL переслать содержимое регистра CL по адресу,отстоящему от переменной M на BX байт |
ИНДЕКСНО-БАЗОВАЯ |
[BR][IR] , V[BR][IR] , [BR][IR]C ,где IR - SI, DI, BR - BX, BP |
адрес операнда вычисляется как сумма содержимых базового и индексного регистров и возможного смещения |
mov [BX][SI]3, AL переслать содержимое регистра AL по адресу, сумме регистров BX, SI и константы 3 |
Замечание. Для всех режимов адресации при формировании физического адреса используется сегментный регистр DS, за исключением случаев, когда в качестве базового регистра выступает регистр BP, в этом случае используется сегментный регистр SS.