- •«Пермский национальный исследовательский политехнический университет»
- •Цель работы
- •Индивидуальное задание
- •1.Теоретические сведения
- •Основные команды языка Ассемблер
- •Команды пересылки.
- •1) Пересылка данных
- •2) Пересылка адресов
- •4) Пересылка в стек и из стека
- •Арифметические операции.
- •1) Команды счёта
- •2) Арифметические операции над двоичными кодами.
- •3) Команда сравнения:
- •Команды корректировки.
- •Команды логических операций.
- •1) Поразрядные логические операции:
- •2) Команды сдвига
- •Команды передачи управления.
- •Команды организации цикла.
- •Команды вызова процедур и возврата из них.
- •Команды прерываний и возврата из них.
- •Функции ввода/вывода dos.
- •2.Расчетно-графическая часть
- •Листинг программы:
- •Библиографический список
Основные команды языка Ассемблер
Любая программа на ассемблере состоит из строк, в строке может быть одна команда для микропроцессора, или одна директива для трансляторов. Программа на языке 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-й по счету байт по адресу
;смещения
При изучении команд следует учитывать допустимые для команды
форматы операндов;
местоположение и способы адресации операндов и результатов;
воздействие команды на флаги.
Команды пересылки.
Команды не изменяют флаги, формат операнда - байт или слово, приемник не может адресоваться непосредственно (т.е. не может быть константой).
1) Пересылка данных
Формат команды: MOV <приемник >,<источник>
Примеры: MOV AX, BX
MOV [BP], Bute ptr 25 ;в сегмент стека записать константу 25
2) Пересылка адресов
Формат команды:
LEA <16-битовый регистр>, <имя переменной>
Действие: адрес смещения переменной, хранимой в памяти, загружается в регистр МП (кроме сегментных регистров).
Пример:
LEA SI, tabl ;адрес смещения переменной table, хранимой в памяти,
;загружается в регистр (рисунок 2).
Р
исунок
2- регистр в который загружается адрес
смещения
Команда 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 должен содержать то же смещение, что и при входе в нее, т.е. подпрограмма не должна забыть в стеке лишнее слово или взять больше нужного.
