280 likes | 642 Views
Архитектура ЭВМ. Практика 2 . Основы ассемблера. Введение. Информация по Ассемблеру. Питер Абель. Язык Ассемблера для IBM PC и программирования. М. «Высшая школа», 1992. Юров В.И. Assembler . Сн.П . «Питер», 2000. Зубков С.В. Assembler для DOS, Windows и UNIX. М. «Питер», 2004.
E N D
Архитектура ЭВМ Практика 2. Основы ассемблера.
Информация по Ассемблеру • Питер Абель. Язык Ассемблера для IBM PC и программирования. М. «Высшая школа», 1992. • Юров В.И. Assembler. Сн.П. «Питер», 2000. • Зубков С.В. Assembler для DOS, Windows и UNIX. М. «Питер», 2004. • Компьютерные учебники, справочники и методические разработки (например, http://oplk.narod.ru/Html/Index_Asm.htm) • Лекции.
Ассемблер • На аппаратном уровне компьютер «понимает» только язык машинных команд (двоичный код). • Язык ассемблера — это символическое представление машинного языка.
Регистры процессора • Регистр – это элемент памяти микропроцессора для временного хранения данных. • Каждый регистр процессора имеет своё обозначение и функциональное назначение. • Существует 16 пользовательских регистров.
Регистры процессора Регистры состояния и управления: Регистры общего назначения (РОН): Регистры сегментов:
Пользовательские регистры • AX (AH/AL) (Accumulator register) — аккумулятор. Применяется для хранения промежуточных данных. Например, команды умножения, деления и сдвига предполагают использование регистра AX. • BX (BH/BL ) (Base register) — базовый регистр. Применяется для хранения базового адреса некоторого объекта в памяти. Может использоваться в качестве "индекса" для расширенной адресации. • CX (CH/CL) (Count register) — регистр-счетчик. Применяется в командах, производящих некоторые повторяющиеся действия. Его использование зачастую неявно и скрыто в алгоритме работы соответствующей команды. К примеру, команда организации цикла loop кроме передачи управления команде, находящейся по некоторому адресу, анализирует и уменьшает на единицу значение регистра CX; • DX (DH/DL) (Data register) — регистр данных. Так же, как и регистр AX, он хранит промежуточные данные. В некоторых командах его использование обязательно; для некоторых команд это происходит неявно.
Регистры сегментов • Отвечают за хранение базового адреса сегментов данных, кода, стека и дополнительных данных. • CS (codesegment) —содержит адрес сегмента с машинными командами, к которому имеет доступ микропроцессор (то есть эти команды загружаются в конвейер микропроцессора). • DS (datasegment) —хранит адрес сегмента данных текущей программы. • SS (stack segment) - содержит адрес сегмента стека. Работа со стеком организуется по принципу: последний записанный в эту область элемент выбирается первым. • ES, GS, FS - дополнительный сегмент данных
Регистр указателя команды • Регистр IP (Instraction Pointer) содержит смещение следующей подлежащей выполнению команды относительно содержимого регистра кода CSв текущем сегменте команд.
Организация доступа к памяти • Используется «Сегментированная модель» доступа к памяти. • Адрес начала сегмента хранится в соответствующем регистре. • Внутри сегмента программа обращается к адресам относительно начала сегмента линейно, т.е. начиная с 0 и заканчивая адресом, равным размеру сегмента. Этот относительный адрес, или смещение, который микропроцессор использует для доступа к данным внутри сегмента, называется эффективным.
Организация доступа к памяти (2) • Диапазон изменения физического адреса в реальном режиме от 0 до 1 Мбайт. • Максимальный размер сегмента 64 Кбайт. Это объясняется 16-разрядной архитектурой регистров. Максимальное значение, которое может содержать 16-ти разрядный регистр равно:2(16-1)= 65535 = 64 Кбайт
Организация доступа к памяти (3) • В сегментном регистре содержаться только старшие 16 бит физического адреса начала сегмента. • Недостающие младшие 4 бита 20-битного адреса получаются сдвигом в сегментном регистре влево на 4 разряда.
FFFFF Физический адрес Эффективный адрес ... Сегменты Смещение + Адрес Сегментный регистр << 4 00000 Память Организация доступа к памяти (4)
Пример формирования физического адреса • Пусть содержимое сегментного регистра равно: 1А62h • После сдвига влево на 4 разряда получим: 1А620h • Смещение пусть равно: 01B5h • К физическому адресу начала сегмента прибавляется смещение: 1А620h + 01B5h --------- 1A7D5
Разработка программ на ассемблере
Разработка программ на ассемблере Текстовый редактор Компоновщик (ALINK.EXE) Транслятор (TASM.EXE) Отладчик (AFDPRO.EXE)
Запуск транслятора, компоновщика, отладчика • Трансляция - процесс формирования объектного модуля из текстового файла *.asm. Трансляция выполняется следующей командой(например): C:\TASM\tasm.exemyfile.asm • Компоновка - процесс формирования загрузочного модуля из нескольких объектных модулей. Компоновка выполняется следующей командой (например): C:\TASM\alink.exemyfile.obj • Отладка - процесс выполнения разработанной программы с целью проверки её работы. Отладка выполняется следующей командой (например): C:\TASM\afdpro.exemyfile.exe
Отладчик AFD PRO • Выход из отладчика – выполнить команду quit, написав ее в строке CMD
Пример программы на языке ассемблера
Практическое задание • Написать исходный текст программы «Перевод в систему счисления». Скомпилировать и запустить программу в отладчике. Проверить правильность работы программы при переводе в системы счисления с основанием 2, 8, 10. • Модифицировать текст программы так, чтобы проверить, правильно ли производится перевод в систему счисления c основанием 16. Объяснить полученный результат.
Работа • Ввести текст программы. • Скомпилировать программу посредством TASM.EXE и ALINK.EXE, запустить программу в отладчике AFD PRO и пошагово выполнить программу.Сделать скриншот работы программы в отладчике перед началом вывода результата на экран. • Сформировать тестовые примеры для перевода чисел из системы счисления 16 в системы счисления 2, 8, 10. Вручную выполнить перевод. Сравнить результаты с работой приложения. • Сформировать тестовые примеры для перевода чисел в систему счисления с основанием 16. Вручную выполнить перевод. Сравнить результаты с работой приложения. Объяснить результат.
Отчет должен содеpжать: • Текст приложения. • Алгоритм работы приложения (т.е. смысл действий, описанных программой). • Скриншот выполнения приложения в отладчике AFD PRO. • Тестовые примеры перевода чисел из одной системы счисления в другую. • Описание модификации текста приложения, обеспечивающие реализацию тестов. • Результаты работы тестового приложения на примерах.