21.Ассемблер.Основные
понятии
Язык ассемблера — язык программирования
низкого уровня, команды которого (за редким исключением) соответствуют
инструкциям процессора вычислительной системы. Трансляция программы в
исполняемый машинный код производится ассемблером программой-транслятором, которая и дала языку
ассемблера его название.
Язык
ассемблера — это язык, в котором каждое высказывание соответствует ровно одной
машинной команде.
Мы используем язык ассемблера, а не программируем на машинном языке (в шестнадцатеричной системе счисления), поскольку на языке ассемблера программировать гораздо проще. Использовать символьные имена и адреса вместо двоичных и восьмеричных намного удобнее. Программисту на языке ассемблера нужно знать только символические названия, поскольку ассемблер транслирует их в машинные команды.
Это утверждение касается и адресов. Программист на языке
ассемблера может дать имена ячейкам памяти, и уже ассемблер должен будет
выдавать правильные числа. Программист на машинном языке всегда должен работать
с числовыми номерами адресов. Сейчас уже нет программистов, которые пишут
программы на машинном языке, хотя несколько десятилетий назад до изобретения
ассемблеров программы именно так и писались.
Рассмотрим пример:
Program mm;
Begin
ASM
Mov ax, 234 вводит 234 в регистр ах
Sub ax,ax вычетает
Mov bx, 235 вводит 235 в регистр bх
Add bx, ax добавляет рез-ты ах в bх
END;
End.
Набор команд
Команды пересылки данных (mov, lea и др.)
Арифметические команды (add, sub, imul и др.)
Логические и побитовые операции (or, and, xor, shr и др.)
Команды управления ходом выполнения программы (jmp, loop, ret и др.)
Команды вызова прерываний (иногда относят к командам управления): int, into
Команды ввода/вывода в порты (in, out)
Для микроконтроллеров и микрокомпьютеров характерны также команды, выполняющие проверку и переход по условию, например:
cbne — перейти, если не равно
dbnz — декрементировать, и если результат ненулевой, то перейти
cfsneq — сравнить, и если не равно, пропустить следующую команду




