- •Щемелева т.К.
- •Архитектура и программирование реального режима микропроцессоров фирмы 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
2.3. Размещение различных типов данных в памяти пк
Память ПК является адресуемой, т.е. каждая ячейка памяти характеризуется содержимым и адресом в IBM ПК адресуемой является каждая ячейка размером байт.
Карта памяти– это способ отображения содержимого и адресов памяти. Каждый прямоугольник отображает содержимое одного байта памяти (см. номера бит в байте: от старшего - седьмого, до младшего - нулевого). Обычно прямоугольники изображают сверху вниз, считая, что ячейка с младшим адресом=0 является верхней, а ячейка со старшим адресом - нижней.
Представим в памяти число 25 в указанных форматах данных (см. рис. 2.1):
В формате байта число 25: = 0001 1001b
В формате слова число 25 = 0000 0000 0001 1001b
В формате двойного слова число 25 = 00000000 00000000 0000 0000 0001 1001b
Рис. 2.1. Размещение различных типов данных в памяти ПК.
ЗАМЕТИМ! Старшие байты числа всегда располагаются ПО СТАРШЕМУ АДРЕСУ ПАМЯТИ!
НАПОМНИМ! 1 Мбайт = 1024 Кбайт; 1 Кбайт = 1024 байт.
2.4. Отрицательные числа
Если байт содержит число со знаком, то его значение представляется только младшими семью битами (0-6); старший бит (бит 7) указывает знак числа, поэтому называется знаковым.
Знаковый бит S равен 0, если число положительное или равно 0 и равен 1, если оно отрицательное.
В ПК числа со знаком представляются в дополнительном коде. То есть для представления отрицательного двоичного числа необходимо инвертировать все биты и прибавить 1. Рассмотрим пример: получения дополнительного кода числа -65
65 = 01000001b; инверсия числа 65 = 10111110b; прибавим 1 к инверсии, получим 10111111b, т.е. -65 = 10111111b.
Для определения абсолютного значения отрицательного двоичного числа, необходимо повторить предыдущие операции: инвертировать все биты и прибавить 1. Пример:
Двоичное значение отрицательного числа = 10111111; инверсия = 01000000b; прибавим 1, получим 01000001b, т.е. +65 = 01000001b.
Программы на языке ASM позволяют вводить числа в десятичной СС (со знаком и без знака) и автоматически выполняют все преобразования.
2.5. Контрольные вопросы и задания
1. Выберите правильный вариант размещения в памяти ПК следующих данных:
1.1. числа 10 в формате слова:
1 2 3
1.2. числа –(минус)101h в формате слова в дополнительном коде b-СС:
1)10000001 00000001; 2) 00000000 00000000 10000001 00000001;
3)11111110 11111111; 4) 00000001 10000001 00000000 10000000.
1.3. строки символов '51'
1.4.строки символов '10':
1) 00110001 00110000; 2) 00000001 00000000;
2) 00110000 00110001; 4) 00000000 00000001.
1.5. числа 10 в формате байта:
1.6. числа '45':
1) 00000100 00000101; 2) 00000101 00000100;
3)00110101 00110100 ; 4) 00110100 00110101.
1.7. Нарисовать карты памяти ПК для представления следующих чисел:
'-45'; 2) '+45'; 3) –45; 4) +45; 5) 45.
Тема 3. Элементы архитектуры персонального компьютера: сегментная память и регистровая структура микропроцессора
3.1. Понятие сегмента
Как известно, МП исполняет только ту программу, которая загружена в электронную (оперативную) память. Память состоит из ячеек, каждая ячейка имеет свой уникальный номер или адрес. Программист присваивает адресу имя, а программа-транслятор заменяет имя на двоичный код. Разрядность шины адреса (ША) МП определяет допустимое количество (пространство) адресов.
МП поддерживает только память, разбитую на блоки (сегменты). Создавая программу, программист организует - определяет - начало и конец ее сегментов и назначение ячеек памяти в них. В реальном режиме работы МП размер сегмента не превышает 64 кбайт. Для получения исполняемой программы в ехе-формате, необходимо определить 3 следующих главных сегмента, а при необходимости – 1 дополнительный:
1. Сегмент кодов. Содержит ячейки памяти, хранящие исполняемую программу (всю совокупность команд в машинных кодах). Первый байт первой команды находится в первой ячейке сегмента и т.д.
2. Сегмент данных. Содержит ячейки с данными программы: константами и рабочими областями, зарезервированными для записи в них программой, данных, вводимых, например, с клавиатуры, а также для вычисляемых программой результатов. Данные, обрабатываемые в МП, часто называют операндами, т.к. над ними выполняется закодированная в команде операция.
3. Сегмент стека. Содержит ячейки, запись и считывание которых выполняется по особому алгоритму, отличному от других сегментов. Используется для временного хранения команд (кодов), данных и промежуточных результатов.
4. Дополнительный сегмент.Содержит ячейки для хранения данных и результатов, дополнительных к сегменту данных.
Сегменты размещаются в памяти в том порядке, в каком они были определены программистом. Программист присваивает сегменту имя, а транслятор заменяет имя двоичным кодом.