- •Щемелева т.К.
- •Архитектура и программирование реального режима микропроцессоров фирмы intel
- •Учебное пособие
- •Пермь 2001
- •Содержание
- •1.2.Переводы между позиционными системами счисления
- •1.3.Система кодирования символов ascii
- •1.4. Преобразование строки ascii-кодов в двоичное и шестнадцатеричное число
- •1.5. Применение систем счисления в эвм
- •1.6. Контрольные вопросы и задания
- •Тема 2. Представление данных на языке ассемблера и их хранение в памяти пк
- •2.1. Биты, байты и слова
- •2.3. Размещение различных типов данных в памяти пк
- •2.4. Отрицательные числа
- •2.5. Контрольные вопросы и задания
- •Тема 3. Элементы архитектуры персонального компьютера: сегментная память и регистровая структура микропроцессора
- •3.1. Понятие сегмента
- •3.2. Способ адресации ячеек сегментированной памяти
- •3.4. Программистская модель мп i8086. Назначение регистров.
- •Регистры общего назначения
- •Регистры сегментов и указатель команд
- •3.5. Контрольные вопросы и задания
- •Тема 4. Создание программы в ехе-формате
- •4.1. Программы на языке транслятораMasm.
- •4.1.1. Определение сегментов и данных.
- •4.1.2. Структура программы.
- •4.2. Программы на языке транслятораTasm.
- •4.2.1. Особенности транслятора.
- •4.2.2. Определение сегментов и данных .
- •4.2.3. Директива model.
- •4.2.4. Директивы упрощенного описания сегментов.
- •4.2.5. Структура программы.
- •4.2.6. Директивы startupcode и exitcode.
- •4.3. Контрольные вопросы и задания
- •Тема 5. Способы адресации данных в командах языка ассемблер
- •5.1. Регистровая адресация
- •5.2. Непосредственная адресация.
- •5.3. Прямая адресация.
- •5.4. Косвенная регистровая.
- •5.5. Адресация по базе.
- •5.6. Индексная адресация.
- •5.7. Адресация по базе с индексированием.
- •5.8. Контрольные задания.
- •Тема 6. Основные команды языка Ассемблер
- •6.1. Команды пересылки.
- •1) Пересылка данных
- •2) Пересылка адресов
- •4) Пересылка в стек и из стека
- •6.2. Арифметические операции.
- •2) Арифметические операции над двоичными кодами.
- •3) Команда сравнения:
- •6.3. Команды корректировки.
- •6.4. Команды логических операций.
- •1) Поразрядные логические операции:
- •2) Команды сдвига
- •6.5. Команды передачи управления.
- •6.6. Команды организации цикла.
- •6.7. Команды вызова процедур и возврата из них.
- •6.8. Команды прерываний и возврата из них.
- •6.8.1. Функции ввода/выводаDos.
- •6.8.2. ФункцииBios управления экраном.
- •Тема 7. Стек
- •7.1.Стек и сегмент стека
- •7.2.Стековые команды
- •7.3. Доступ к элементам стека
- •Тема 8. Практическая работа на пк.
- •Тема 9. Создание линейных программ
- •9.1 Создание линейной программы.
- •9.1.1. Составление текста программы.
- •9.1.2 Трансляция.
- •9.1.3. Создание исполняемого файла
- •9.1.4.Отладка программы в turbo debugger’е
- •9.2. Контрольные вопросы и задания
- •Тема 10. Организация ветвлений.
- •10.1.Флаги и их назначение.
- •10.2 Команда безусловного перехода jmp
- •10.3 Команды условных переходов
- •10.4. Создание разветвленной программы.
- •10.4.1. Составление текста программы.
- •10.4.2.Трансляция.
- •10.4.3. Создание исполняемого файла.
- •10.5. Контрольные вопросы и задания
- •Тема 11. Организация циклов
- •11.1. Команды управления циклом
- •11.2.Создание циклической программы.
- •11.2.1.Составление текста программы.
- •11.2.2.Трансляция.
- •11.2.3.Создание исполняемого файла
- •11.2.4.Отладка программы в turbo debugger’е
- •11.3. Контрольные вопросы и задания
- •Тема 12. Циклическая разветвленная программа
- •12.1.Создание программы.
- •12.1.1.Составление программы
- •12.1.2.Трансляция.
- •12.1.3.Создание исполняемого файла.
- •12.1.4. Отладка программы в turbo debugger’е
- •12.2.Контрольные вопросы
- •12.3. Контрольные задания
- •Тема 13. Связь ассемблера с языкомPascal.
- •13.1 Общие положения
- •13.2 Организация связи
- •13.3 Передача аргументов (и возврат результата в случае функции)
- •13.4 ДирективаArg
- •13.5 Использование операндов директивыmodel
- •13.6 Передача данных остальных типовPascal
- •13.7 Возврат значения в программу наPascal
- •13.8 КомандыEnter иLeave
- •13.9 Итоги
- •Листинг 1.2. Ассемблерное представление.
- •Тема 16. Рекомдации начинающему программисту
- •Тема 17. Контрольная работа
- •Список литературы
- •Приложение 1 Инструкция по работе с программой Turbo Debugger.
- •Приложение 2 Практическая работа на пк
- •Приложение 3 ключи командной строкиtasmиtlink
4.3. Контрольные вопросы и задания
1. Для сегментов кода, данных и стека даны имена CDSEG, DATSEG и STKSEG соответственно. Сформируйте директиву ASSUME:
1) ASSUME CX:CDSEG, DX:DATSEG, SP:STKSEG;
2) ASSUME CS=CDSEG, DS=DATSEG, SS=STKSEG;
3) ASSUME CS:CDSEG, DS:DATSEG, SS:STKSEG.
2. Какая директива является закрывающей для директивы SEGMENT ?
1) ENDP 2) ENDS 3) END.
3. Для нормальной работы программы необходимо предварительно:
1) Инициализировать все используемые программой регистры;
2) Сохранить в стеке все используемые программой регистры;
3) Выполнить сначала 1), потом 2);
4) Выполнить сначала 2), потом 1).
4. Для определения массива констант от 0 до 9 в формате слова, с именем VAR в сегменте данных необходимо написать конструкцию:
1) VAR DW 0,1,2,3,4,5,6,7,8,9
2) VAR DB 0,1,2,3,4,5,6,7,8,9
3) VAR DW 0..9
5. Для внесения дополнительного сегмента данных DOPSEG в программу необходимо включить в ASSUME следующую конструкцию (сегмент данных имеет имя DATSEG):
1) ES=DOPSEG 2)AX:DOPSEG 3)ES:DOPSEG 4)DS:DATSEG, DOPSEG
6. Какая директива является закрывающей для всей программы ?
1) ENDP 2) ENDS 3) END
7. Для завершения программы в ее текст в нужное место необходимо поместить команду:
1) RETN 2) MOV 3) PUSH 4) ASSUME
8. Для определения константы символьного типа с именем SYMB и содержащую слово «Привет», в сегменте данных необходимо написать конструкцию:
1) SYMB DW Привет
2) SYMB DB 'Привет'
3) SYMB DD 'Привет'
9. Какое значение параметра 'выравнивание' директивы SEGMENT указывает на необходимость размещения сегмента на ближайшем свободном адресе?
1) BYTE 2) WORD 3) PARA 4) PAGE
10. Какое значение параметра 'выравнивание' директивы SEGMENT указывает на необходимость размещения сегмента по заданному адресу?
1) PUBLIC 2) STACK 3) AT 4) COMMON
11. Какая директива в режиме Ideal указывает на начало программы?
1) BEGIN 2) END 4) STARTUPCODE
12. Какая модель памяти не может использоваться для создания exe-файла?
1) TINY 2) SMALL 3) для создания exe-файла могут использоваться
все модели
13. Какая директива используется для сокращенного описания сегмента кода?
1) CODESEG 2) DATASEG 3) STACK
Тема 5. Способы адресации данных в командах языка ассемблер
В общем случае данные (операнды и результат) могут хранится в памяти, портах, регистрах. В программах на языке Ассемблер программист сам распределяет память и регистры под операнды и результаты. Место размещения (иначе - адрес) программист указывает в каждой команде, следуя правилам синтаксиса языка.
Главные правила синтаксиса состоят в следующем :
1. В одной команде только один из операндов может быть размещен в памяти.
2. Регистр может хранить операнд или адрес (смещение), который должен быть заключен в квадратные скобки.
3. Размер операнда определяется размером регистра
Например : AX – хранит только слово;
BH или AL – только байт.
4. Результат операции по умолчанию сохраняется по адресу первого операнда (по умолчанию – означает, что сведения в команде об этом отсутствуют, поэтому транслятор принимает определенный вариант – адрес первого операнда).
Существуют следующие способы: