Программирование на Ассемблере
И наконец, рассмотрим команды пересылки данных, которые, по всей видимости,
составляют основу набора команд любого процессора. Мнемоника Действие
--------------------------------------------------------------------------
EXG Rn,Rn обмен значениями двух регистров
LEA ,An загрузка адреса операнда в регистр An; в качестве
не могут быть указаны регистры; не допускаются
постинкрементный и предекрементный методы адресации
LINK An,#n связать стековый фрейм с An
MOVE , пересылка (копирование)
MOVE SR, чтение регистра состояния (SR) (привелегированная
команда)
MOVE ,SR запись в регистр состояния (SR) (привелегированная
команда)
MOVE USP, чтение указателя стека пользователя (привелегированная
команда)
MOVEA ,An пересылка в адресный регистр
MOVEM Regs, запись набора регистров в память
MOVEM ,Regs чтение набора регистров из памяти
MOVEP Dn,d16(An) запись во внешний регистр
MOVEP d16(An),Dn чтение из внешнего регистра
MOVEQ #n,Dn быстрая пересылка восьмибитной константы в Dn с
расширением знака до .L
PEA размещение адреса операнда в стеке
SWAP Dn обмен значениями старшего и младшего слов регистра Dn
UNLK An отсоединить стековый фрейм от An Сделаем несколько замечаний: Команда LEA может использоваться для загрузки адреса переменной в регистр,
например, команда LEA Label,A0 эквивалентна команде MOVE #Label,A0.
Обратите внимание на различие синтаксиса этих команд: в случае LEA первый
операнд - это сама переменная, а в случае MOVE - непосредственное значение
адреса метки Label. Команда LEA не допускает использования
непосредственного, регистрового, постинкрементного и предекрементного
методов адресации. Но этим не ограничивается применение команды LEA, рассмотрим более
интересный случай: LEA 1(A0,D0),A1 Что будет записано в регистр A1 после выполнения этой команды? Ответ
очевиден: адрес первого операнда, который вычисляется как 1 + <содержимое A0> + <содержимое D0> (см.
|