-
Notifications
You must be signed in to change notification settings - Fork 2
Лабораторная работа 2
Язык ассемблера — машинно-ориентированный язык программирования низкого уровня. Его команды прямо соответствуют отдельным командам процессора.
Исполняемый файл — файл, содержащий программу в виде, в котором она может быть исполнена компьютером. Перед исполнением программа загружается в память, и выполняются некоторые подготовительные операции (настройка окружения, загрузка библиотек). Основной формат исполняемых файлов в Windows - .EXE.
Компилятор – это специальная программа, которая переводит текст программы, написанный на языке программирования, в набор машинных кодов.
Компоновщик (линковщик, линкер) — инструментальная программа, которая производит компоновку («линковку»): принимает на вход один или несколько объектных модулей и собирает по ним исполняемый модуль.
Отладчик — компьютерная программа для автоматизации процесса отладки: поиска ошибок в других программах.
В зависимости от встроенных возможностей, отладчик позволяет выполнять трассировку, отслеживать, устанавливать или изменять значения переменных в процессе выполнения кода, устанавливать и удалять контрольные точки или условия остановки и так далее.
Macro Assembler (MASM) — ассемблер для процессоров семейства x86. Включает компилятор, линковщик и дополнительные инструменты, в т.ч. отладчик. Другие распространённые (сейчас или в прошлом) ассемблеры - TASM, NASM, FASM и др.
.COM (англ. command) — расширение файла, в системах DOS COM-файл — простой тип исполняемого файла, при выполнении которого данные, код и стек находятся в одном и том же 16-битном сегменте. Поэтому размер файла не может превышать 65280 байт (что на 256 байт меньше размера сегмента — 2 16 байт). COM-файлы для DOS можно выполнять в некоторых версиях Windows, а также на эмуляторах.
.COM — один из простейших форматов исполняемых файлов для процессоров семейства x86. Программа, загруженная в память для исполнения, является точной копией файла на диске.
Регистры процессора — блок ячеек памяти, образующий сверхбыструю оперативную память внутри процессора. Большинство команд процессора манипулируют данными, хранящимися в регистрах.
Система команд (также набор команд) — соглашение о предоставляемых архитектурой средствах программирования, в том числе, типах данных, наборе инструкций, системе регистров и т.д.
- команды пересылки данных;
- арифметические команды;
- логические команды;
- команды переходов.
Регистр указателя команд (IP
, Instruction pointer) - специальный регистр, который всегда хранит в себе смещение команды, которая будет выполнена следующей. Меняется автоматически по ходу выполнения программы и не может быть изменён программно.
Регистры общего назначения - группа регистров, доступная для чтения/записи основными командами.
Предназначены для временного хранения данных, записи параметров машинных команд, арифметической обработки и т.д. Существует всего 4 РОН: AX
, BX
, CX
, DX
. Каждый содержит в себе 16 бит и делится на 2 части по 8 бит - старшую (high, H) и младшую (low, L). Обращаться можно как к регистру целиком, так и к его половинам по отдельности.
-
AX
(AH
+AL
): аккумулятор - умножение, деление, обмен с устройствами ввода/вывода (команды ввода и вывода); -
BX
(BH
+BL
): базовый регистр в вычислениях адреса, часто указывает на начальный адрес (называемый базой) структуры в памяти; -
CX
(CH
+CL
): счетчик циклов, определяет количество повторов некоторой операции; -
DX
(DH
+DL
): определение адреса ввода/вывода, так же может содержать данные, передаваемые для обработки в подпрограммы.
- необработанные шестнадцатеричные данные,
- содержимое стека,
- содержимое регистров процессора,
- состояние флагов процессора.
- Верхний ряд: левое - регистры процессора, среднее - стек, правое - флаги.
- Средний ряд: левое верхнее - окно команд отладчика, левое нижнее - окно кода программы, правое - окно данных.
- Нижний ряд: oкно данных, которое отображает выбранную область памяти в двух форматах : шестнадцатеричном и символьном
Нижняя строка экрана предназначена для управления режимом работы отладчика с помощью функциональной клавиатуры:
- F1 - пошаговый режим (шаг - команда),
- F2 - процедурный режим (шаг - процедура),
- F3 - просмотр буфера команд отладчика,
- F4 - включение/выключение подсказки,
- F5 - вызов меню обработки точек прерывания,
- F7 - F10 - выбор активного окна.
Команда | Действие |
---|---|
? {%}= выражение | калькулятор (? %= десятичный тип) |
D адрес | выдать код, начиная с данного адреса |
F адрес, длина, значение | заполнить область памяти значением |
G {адрес_нач.},{адрес_прер.} | выполнить программу |
GC {адрес_нач.},{адрес_прер.} | продолжить выполнение программы без сброса счетчика прерываний |
L {/адрес} имя_файла {парам} | загрузить из файла |
PT {/S} {номер_нач.,колич.{,имя_файла}} | вывод содержимого буфера трассировки |
QUIT | прекратить отладку |
S {{адрес},строка} | искать строку, начиная с адреса |
SI {{адрес},команда} | искать команду, начиная с адреса |
TR {ON | OFF} {CLR} |
W {адрес, длина, имя_файла} | записать область памяти в файл |