Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
assmblr.docx
Скачиваний:
218
Добавлен:
16.02.2016
Размер:
366.71 Кб
Скачать

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, осуществляющее выход из программы.