- •Щемелева т.К.
- •Архитектура и программирование реального режима микропроцессоров фирмы 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
10.4.2.Трансляция.
Производится транслятором MASM.EXE или TASM.EXE. Для этого необходимо набрать в командной строке MS DOS имя транслятора, а затем указать ей имя файла, под которым вы сохранили свою программу в текстовом редакторе. Например: MASM.EXE MYPROG.ASM .
В случае отсутствия ошибок будет создан объектный файл *.obj, который будет являться источником для дальнейшей работы.
10.4.3. Создание исполняемого файла.
Производится программами LINK.EXE или TLINK.EXE, для этих программ входным является Ваш файл *.obj, который формируется транслятором. Работа с компоновщиком LINK.EXE подробно описана в п. 7.13.
10.4.4. Отладка программы в TURBO DEBUGGER’е.
Для отладки программы ее необходимо загрузить в отладчик TURBO DEBUGGER, где в пошаговом режиме можно проследить работу программы. Инструкция по применению TURBO DEBUGGER приведена в ПРИЛОЖЕНИИ.
10.5. Контрольные вопросы и задания
1.Каков диапазон перехода команды JMP SHORT <Метка>:
1) -32768 +32767 байт. 2) -128 +127 байт.
2.Выберите правильный фрагмент программы проверки на наличие переноса из старшего разряда при выполнении сложения. Если перенос был, то происходит переход на метку ERROR:
1) ADD AX, BX 2) ADD AX, BX 3) ADD AX, BX 4) ADD AX, BX
JP ERROR JA ERROR JNA ERROR JC ERROR
3.Каков диапазон перехода команды JMP NEAR Метка:
1) -32768 +32767 байт. 2) -128 +127 байт.
4.Выберите правильный фрагмент программы сравнения беззнакового числа 5 с операндом в регистре AX и переход в случае равенства к метке EQAL. Сравнение происходит только по флагу Z:
1) CMP AX,5 2) CMP 5,AX 3) CMP AX,5 4) CMP 5,AX
JZ EQAL JZ EQAL JNZ EQAL JP EQAL
5.Какая из команд устанавливает в 1 флаг переноса CF?
1) STI 2) CLD 3) STC
6.Выберите правильный фрагмент программы сравнения беззнакового числа 5 с операндом в регистре AX и переход в случае неравенства к метке N_EQAL. Сравнение происходит только по флагу Z:
1) CMP AX,5 2) CMP 5,AX 3) CMP AX,5
JZ N_EQAL JZ N_EQAL JNZ N_EQAL
4) CMP 5,AX 5) CMP 5,AX 6) CMP 5,AX
JP N_EQAL JE N_EQAL JNE N_EQAL
7.Укажите какой из флагов определяет нулевой результат операции:
1)P; 2)NP; 3)Z ;4)NZ .
8.Укажите условие нечетности числа результата операции:
1)NZ; 2)NC; 3)C; 4)NP; 5)NS; 6)S.
9.Укажите условие неравенства двух операндов:
1)NA; 2)NB; 3)E; 4)AB; 5)NE; 6)NL; 7)NG.
10.Выберите правильный фрагмент программы проверки на наличие переноса из старшего разряда при выполнении сложения. Если перенос не был, то происходит переход на метку ERROR:
1) ADD AX, BX 2) ADD AX, BX 3) ADD AX, BX 4) ADD AX, BX
JNC ERROR JA ERROR JNA ERROR JC ERROR
Тема 11. Организация циклов
11.1. Команды управления циклом
Используются при реализации циклов с различными условиями в алгоритмах.
Формат команды:
LOOP <Метка>
Исполнение команды: Производится декремент (уменьшение на 1) содержимого регистра CX и, если CX не равен 0, происходит переход к началу цикла. Регистр флажков не модифицируется.
Команды управления циклами всегда имеют атрибут NEAR . Операнд - метка является 8-битным смещением (относительно текущего состояния указателя команд IP), поэтому команды могут выполнить переход только на 127 байт вперед или на 128 байт назад.
Выполнение команды цикла с условием показано на рис.22.
КомандаLOOP имеет несколько модификаций:
1) Команды LOOPE (LOOPZ) <метка>
Исполняют декремент регистра CX и, если CX не равен 0, а флажок ZF равен 1, происходит переход к началу цикла. Длина команд равна 2 байтам, а время выполнения - 6 тактам (без перехода) и 18 (с переходом). Регистр флажков не модифицируется.
2) Команды LOOPNE (LOOPNZ) <метка>
Исполняют декремент регистра CX и, если CX не равен 0, а флажок ZF равен 0, происходит переход к началу цикла. Длина команд равна 2 байтам, а время выполнения - 6 тактам (без перехода) и 18 (с переходом). Регистр флажков не модифицируется.