Skip to content

Лабораторная работа 2

Inspirate789 edited this page May 15, 2022 · 3 revisions

Теоретическая и справочная информация.

Язык ассемблера — машинно-ориентированный язык программирования низкого уровня. Его команды прямо соответствуют отдельным командам процессора.

Исполняемый файл — файл, содержащий программу в виде, в котором она может быть исполнена компьютером. Перед исполнением программа загружается в память, и выполняются некоторые подготовительные операции (настройка окружения, загрузка библиотек). Основной формат исполняемых файлов в Windows - .EXE.

Компилятор – это специальная программа, которая переводит текст программы, написанный на языке программирования, в набор машинных кодов.

Компоновщик (линковщик, линкер) — инструментальная программа, которая производит компоновку («линковку»): принимает на вход один или несколько объектных модулей и собирает по ним исполняемый модуль.

Отладчик — компьютерная программа для автоматизации процесса отладки: поиска ошибок в других программах.

В зависимости от встроенных возможностей, отладчик позволяет выполнять трассировку, отслеживать, устанавливать или изменять значения переменных в процессе выполнения кода, устанавливать и удалять контрольные точки или условия остановки и так далее.

Macro Assembler (MASM) — ассемблер для процессоров семейства x86. Включает компилятор, линковщик и дополнительные инструменты, в т.ч. отладчик. Другие распространённые (сейчас или в прошлом) ассемблеры - TASM, NASM, FASM и др.

.COM (англ. command) — расширение файла, в системах DOS COM-файл — простой тип исполняемого файла, при выполнении которого данные, код и стек находятся в одном и том же 16-битном сегменте. Поэтому размер файла не может превышать 65280 байт (что на 256 байт меньше размера сегмента — 2 16 байт). COM-файлы для DOS можно выполнять в некоторых версиях Windows, а также на эмуляторах.

.COM — один из простейших форматов исполняемых файлов для процессоров семейства x86. Программа, загруженная в память для исполнения, является точной копией файла на диске.

Регистры процессора — блок ячеек памяти, образующий сверхбыструю оперативную память внутри процессора. Большинство команд процессора манипулируют данными, хранящимися в регистрах.

Система команд (также набор команд) — соглашение о предоставляемых архитектурой средствах программирования, в том числе, типах данных, наборе инструкций, системе регистров и т.д.

Система команд x86 процессора включает в себя следующие четыре основные группы команд:

  • команды пересылки данных;
  • арифметические команды;
  • логические команды;
  • команды переходов.

Регистр указателя команд (IP, Instruction pointer) - специальный регистр, который всегда хранит в себе смещение команды, которая будет выполнена следующей. Меняется автоматически по ходу выполнения программы и не может быть изменён программно.

Регистры общего назначения процессора (РОН) 8086.

Регистры общего назначения - группа регистров, доступная для чтения/записи основными командами.

Предназначены для временного хранения данных, записи параметров машинных команд, арифметической обработки и т.д. Существует всего 4 РОН: AX, BX, CX, DX. Каждый содержит в себе 16 бит и делится на 2 части по 8 бит - старшую (high, H) и младшую (low, L). Обращаться можно как к регистру целиком, так и к его половинам по отдельности.

Назначения регистров общего назначения:

  • AX (AH + AL): аккумулятор - умножение, деление, обмен с устройствами ввода/вывода (команды ввода и вывода);
  • BX (BH + BL): базовый регистр в вычислениях адреса, часто указывает на начальный адрес (называемый базой) структуры в памяти;
  • CX (CH + CL): счетчик циклов, определяет количество повторов некоторой операции;
  • DX (DH + DL): определение адреса ввода/вывода, так же может содержать данные, передаваемые для обработки в подпрограммы.

Отладчик AFD.

Отладчик AFD позволяет программисту проверять и модифицировать:

  1. необработанные шестнадцатеричные данные,
  2. содержимое стека,
  3. содержимое регистров процессора,
  4. состояние флагов процессора.

После старта программы AFD на экране появляются 7 окон:

  • Верхний ряд: левое - регистры процессора, среднее - стек, правое - флаги.
  • Средний ряд: левое верхнее - окно команд отладчика, левое нижнее - окно кода программы, правое - окно данных.
  • Нижний ряд: oкно данных, которое отображает выбранную область памяти в двух форматах : шестнадцатеричном и символьном

Нижняя строка экрана предназначена для управления режимом работы отладчика с помощью функциональной клавиатуры:

  • F1 - пошаговый режим (шаг - команда),
  • F2 - процедурный режим (шаг - процедура),
  • F3 - просмотр буфера команд отладчика,
  • F4 - включение/выключение подсказки,
  • F5 - вызов меню обработки точек прерывания,
  • F7 - F10 - выбор активного окна.

Управление работой отладчика может осуществляться с помощью команд:

Команды отладчика AFD:

Команда Действие
? {%}= выражение калькулятор (? %= десятичный тип)
D адрес выдать код, начиная с данного адреса
F адрес, длина, значение заполнить область памяти значением
G {адрес_нач.},{адрес_прер.} выполнить программу
GC {адрес_нач.},{адрес_прер.} продолжить выполнение программы без сброса счетчика прерываний
L {/адрес} имя_файла {парам} загрузить из файла
PT {/S} {номер_нач.,колич.{,имя_файла}} вывод содержимого буфера трассировки
QUIT прекратить отладку
S {{адрес},строка} искать строку, начиная с адреса
SI {{адрес},команда} искать команду, начиная с адреса
TR {ON OFF} {CLR}
W {адрес, длина, имя_файла} записать область памяти в файл
Clone this wiki locally