Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебн пособ по арх и прогр МП.doc
Скачиваний:
64
Добавлен:
10.12.2013
Размер:
1.59 Mб
Скачать

Тема 6. Основные команды языка Ассемблер

Напомним, что любая программа на ассемблере состоит из строк, в строке может быть одна команда для микропроцессора, или одна директива для трансляторов. Программа на языке ASM- это текстовым файлом с расширением ASM. Команда на языке ASM имеет формат:

<метка>: <мнемокод операции> <A1>, <A2>; <комментарий>

Метка-имя команды, присвоенное программистом, для ссылок на эту команду в других командах; метка не может начинаться с цифры.

Пример: pauza-1:> <MOV> <AL,[BX]>

Мнемокод операции – это зарезервированное ассемблером слово из 3,5 букв, обозначающее некоторую операцию.

Пример: MOV – мнемокод, операнд берется из памяти и куда-либо перемещается.

Адреса операндов– в нем указывается место положения операндов, на основе выбранных программистом способов адресации для каждого операнда раздельно.

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

Пример:

m1: mov al,[bx] ;процессор читает байт из сегмента данных по адресу

;смещения, хранящемуся в [bx], в свой регистр al.

m2: mov ax,[bx]+10 ;загружаем в регистр ax 10-й по счету байт по адресу

;смещения

При изучении команд следует учитывать допустимые для команды

  • форматы операндов;

  • местоположение и способы адресации операндов и результатов;

  • воздействие команды на флаги.

6.1. Команды пересылки.

Команды не изменяют флаги, формат операнда - байт или слово, приемник не может адресоваться непосредственно (т.е. не может быть константой).

1) Пересылка данных

Формат команды: MOV <приемник >,<источник>

Примеры: MOV AX, BX

MOV [BP], Bute ptr 25 ;в сегмент стека записать константу 25

2) Пересылка адресов

Формат команды:

LEA <16-битовый регистр>, <имя переменной>

Действие: адрес смещения переменной, хранимой в памяти, загружается в регистр МП (кроме сегментных регистров).

Пример:

LEA SI, tabl ;адрес смещения переменной table, хранимой в памяти,

;загружается в регистр (см. рис. 6.1).

Рис. 6.1.

Команда MOV SI,offset table выполняется аналогично.

3) Команды ввода/вывода(пересылки в порт)

а) Ввод из порта. Формат команды:

IN<регистр А>,<адрес порта>

б) Вывод в порт. Формат команды:

OUT<адрес порта>,<регистр А>

4) Пересылка в стек и из стека

Стек – память, организованная определенным образом.

а) Пересылка в стек. Формат команды:

PUSH <источник>

б) Пересылка из стека. Формат команды:

POP <приемник>

Команды PUSH и POP работают с ячейками стека, неявно адресуя через SS:SP.

PUSH AX

PUSH [BX]

PUSH DS

Обе команды работают со словом, т.е. нельзя поместиь в стек или извлечь из него одиночный байт. При выполнении PUSH вначале уменьшается на 2 содержимое указателя SP, а затем операнд помещается по адресу SS:SP. При извлечении из стека сначала читается память по адресу SS:SP, а затем SP увеличивается на 2. Таким образом, при заполнении указатель вершины стека SP смещается к младшим адресам, а при освобождении – к старшим. Нужно помнить, что при выходе из подпрограммы указатель SP должен содержать то же смещение, что и при входе в нее, т.е. подпрограмма не должна забыть в стеке лишнее слово или взять больше нужного.