Архитектура ЭВМ Практика 2. Основы ассемблера.
Jan 13, 2016
Архитектура ЭВМПрактика 2. Основы ассемблера.
Информация по Ассемблеру• Питер Абель. Язык Ассемблера для IBM
PC и программирования. М. «Высшая школа», 1992.
• Юров В.И. Assembler. Сн.П. «Питер», 2000.
• Зубков С.В. Assembler для DOS, Windows и UNIX. М. «Питер», 2004.
• Компьютерные учебники, справочники и методические разработки (например, http://oplk.narod.ru/Html/Index_Asm.htm)
• Лекции.
Ассемблер• На аппаратном уровне компьютер «понимает»
только язык машинных команд (двоичный код).
• Язык ассемблера — это символическое представление машинного языка.
Команда Запись в машинных кодах
Запись на языке ассемблера
Загрузить в регистр AH число 4Ch.
B44C MOV AH,4C
Умножить число, находящееся в регистре AX на число по адресу [010A] и сохранить результат в AX.
F72E0A01 IMUL W/[010A]
Вычесть из числа, хранящегося в AX число, хранящееся в BX и сохранить результат в AX
2BC3 SUB AX,BX
Регистры процессора
•Регистр – это элемент памяти микропроцессора для временного хранения данных.
•Каждый регистр процессора имеет своё обозначение и функциональное назначение.
•Существует 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 (code segment) — содержит адрес сегмента с машинными командами, к которому имеет доступ микропроцессор (то есть эти команды загружаются в конвейер микропроцессора).
▫DS (data segment) —хранит адрес сегмента данных текущей программы.
▫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 разряда.
Организация доступа к памяти (4)
Память
00000
FFFFF
Сегменты
АдресСегментный
регистр << 4
+Смещение
Эффективный адрес
Физический адрес
...
Пример формирования физического адреса• Пусть содержимое сегментного регистра
равно:
1А62h• После сдвига влево на 4 разряда получим:
1А620h• Смещение пусть равно:
01B5h• К физическому адресу начала сегмента
прибавляется смещение: 1А620h+ 01B5h--------- 1A7D5
Разработка программ на ассемблере
Текстовый редактор
Транслятор(TASM.EXE)
Компоновщик
(ALINK.EXE)
Отладчик(AFDPRO.EX
E)
Запуск транслятора, компоновщика, отладчика• Трансляция - процесс формирования объектного
модуля из текстового файла *.asm. Трансляция выполняется следующей командой (например):C:\TASM\tasm.exe myfile.asm
• Компоновка - процесс формирования загрузочного модуля из нескольких объектных модулей. Компоновка выполняется следующей командой (например):
C:\TASM\alink.exe myfile.obj
• Отладка - процесс выполнения разработанной программы с целью проверки её работы. Отладка выполняется следующей командой (например):
C:\TASM\afdpro.exe myfile.exe
Отладчик AFD PRO
•Выход из отладчика – выполнить команду quit, написав ее в строке CMD
Пример программы на языке ассемблера
Практическое задание• Написать исходный текст программы
«Перевод в систему счисления». Скомпилировать и запустить программу в отладчике. Проверить правильность работы программы при переводе в системы счисления с основанием 2, 8, 10.
• Модифицировать текст программы так,
чтобы проверить, правильно ли производится перевод в систему счисления c основанием 16. Объяснить полученный результат.
Работа1. Ввести текст программы.
2. Скомпилировать программу посредством TASM.EXE и ALINK.EXE, запустить программу в отладчике AFD PRO и пошагово выполнить программу. Сделать скриншот работы программы в отладчике перед началом вывода результата на экран.
3. Сформировать тестовые примеры для перевода чисел из системы счисления 16 в системы счисления 2, 8, 10. Вручную выполнить перевод. Сравнить результаты с работой приложения.
4. Сформировать тестовые примеры для перевода чисел в систему счисления с основанием 16. Вручную выполнить перевод. Сравнить результаты с работой приложения. Объяснить результат.
Отчетдолжен содеpжать: 1.Текст приложения.
2.Алгоритм работы приложения (т.е. смысл действий, описанных программой).
3.Скриншот выполнения приложения в отладчике AFD PRO.
4.Тестовые примеры перевода чисел из одной системы счисления в другую.
5.Описание модификации текста приложения, обеспечивающие реализацию тестов.
6.Результаты работы тестового приложения на примерах.