- •Лабораторная работа №1 работа с машинными командами и командами ассемблера с помощью отладчика debug
- •1. Цель работы
- •2. Основные сведения
- •2.1. Машинные команды
- •2.2. Команды ассемблера
- •Некоторые команды ассемблера
- •2.3. Отладчик Debug
- •3. Методические указания к выполнению лабораторной работы
- •3.1. Арифметика при помощи команд Debug и просмотр регистров
- •3.2. Машинные команды
- •3.3. Команды ассемблера
- •4. Контрольные вопросы
- •Лабораторная работа №2 основы программирования на ассемблере в windows
- •1. Цель работы
- •2. Основные сведения
- •2.1. Особенности программирования на ассемблере для Windows
- •2.2. Вызов WinApi функций
- •2.3. Создание программ на ассемблере
- •1. Получение ассемблерного листинга
- •2. Ассемблирование (трансляция)– получение объектного модуля
- •3. Компоновка (линковка) – создание исполняемого модуля
- •4. Выполнение (запуск) программы
- •2.4. Инструментальный пакет masm32
- •Основные сведения и порядок работы в пакете masm32:
- •2.5. Примеры
- •3. Методические указания к выполнению лабораторной работы
- •4. Контрольные вопросы
- •Литература
- •Лабораторная работа №3 представление данных в памяти компьютера
- •1. Цель работы
- •2. Основные сведения
- •2.1. Типы данных
- •2.2. Директивы определения данных
- •2.3. Взаимодействие ассемблерных программ с памятью
- •2.4. Примеры
- •3. Методические указания к выполнению лабораторной работы
2.2. Команды ассемблера
Программировать в машинных кодах довольно сложно, поскольку в этом случае приходится оперировать только цифрами. Для удобства программистов был создан так называемый язык ассемблера или просто ассемблер. Он относится к классу машинно-ориентированных языков. Его команды более человекочитаемы. Одна команда на ассемблере транслируется обычно в одну машинную команду и редко – в несколько.
Теперь посмотрим, как выглядит формат команды на ассемблере:
[Метка [:] ] КОП [Операнд] [.Операнд] [: Комментарий]1
Между элементами команды вставлены пробелы.
КОП (Код оператора) – мнемокод команды, состоит из 2-6 букв.
Операнд – явно заданный адрес; имя метки или переменной; само значение переменной и т.п. Количество необходимых в команде операндов ассемблер узнает по КОП. В большинстве двухадресных команд присутствуют операнды приемника (dst – destination) и источника (src – source); источник не изменяет своего содержания, в приемнике первое число, участвующее в операции, заменяется результатом.
Метка – имя команды ассемблера для обращения к этой команде.
Пример команды на ассемблере: MOV ax, 0.
Эта команда означает следующее: занести число ноль в регистр ах. Для дальнейшего изучения команд ассемблера необходимы определенные сведения об устройстве вычислительной машины.
Помимо логических схем процессор содержит набор ячеек памяти, называемых регистрами. Все регистры можно разделить на 4 группы:
универсальные регистры: AX, BX, CX, DX; используются для временного хранения любых данных;
сегментные регистры: CS, DS, SS, ES; используются для хранения начальных адресов полей памяти (сегментов);
регистры смещения: IP, SP, BP, SI, DI; предназначены для хранения относительных адресов ячеек памяти внутри сегментов;
регистр флагов: FL; содержит флаги, управляющие прохождением программы в ПК.
При этом можно работать с каждым регистром целиком, а можно отдельно с каждой его половиной (регистры AH, BH, CH, DH – старшие (High) байты, а регистры AL, BL, CL, DL – младшие (Low) байты соответствующих 2-байтовых регистров).
Некоторые команды ассемблера
Команды пересылки данных
MOV dst, src – пересылка данных из src в dst.
PUSH src – помещает в вершину стека содержимое src.
POP dst – снимает слово с вершины стека и помещает его в dst.
Арифметические команды
ADD dst, src – содержимое src складывается с содержимым dst, и результат помещается в src.
SUB dst, src – содержимое src вычитается из содержимого dst, и результат помещается в src.
INC dst – прибавляет 1 к содержимому dst.
DEC dst – вычитает 1 из содержимого dst.
MUL src – одноадресная команда, указывается только множитель, множимое берется из AL, а результат помещается в AX.
DIV src – одноадресная команда, указывается только делитель, делимое берется из AX, а результат помещается в AL.
Команда безусловной передачи управления
JMP opr – команда безусловной передачи управления.
Это основные, наиболее часто используемые команды ассемблера.
Пример. Вывести символ “*” на экран.
MOV AH, 02 ; системная функция 02 – вывод символа на экран
MOV DL, 2A ; запись в регистр DL ASCII-кода символа
INT 21h ; это основное прерывание DOS, реализующее много различных функций. Для распечатки символа на экране в регистре АН должна быть функция 02, при этом в DL записывают предварительно код символа.
INT 20h ; прерывание DOS, осуществляющее выход из программы.