Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник по Микропроцессорам_МИА.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

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

Данные в процессоре i86 перемещаются с помощью инструкции MOV. В действительности MOV (от слова переместить) - это не совсем удачное название данной инструкции. Более удачным было бы название COPY (копировать), так как инструкция MOV на самом деле записывает копию операнда-источника в операнд-приемник [38].

Например, инструкции:

mov ax,0

mov bx,9

mov ax,bx

сначала записывают в регистр AX константу 0, затем в регистр BX записывается константа 9, и, наконец, содержимое BX копируется в AX.

Заметим, что значение 9 не перемещается из BX в AX, оно просто копируется из регистра BX в регистр AX.

В инструкции MOV можно использовать почти любую пару операндов, что имеет смысл за исключением того случая, когда в качестве операнда используется сегментный регистр. В качестве операнда-источника (правого операнда) инструкции MOV можно использовать следующее: константу, выражение, при вычислении которого получается константа, общий регистр или ячейку памяти, доступную с помощью одного из режимов адресации. В качестве операнда-приемника (левого операнда) инструкции MOV может использоваться общий регистр или ячейка памяти.

Приведем примеры:

а) mov ax, сx- пересылка содержимого регистра сx в регистр ax;

б) mov cx, exword -пересылка 2 байт, расположенных в поле exword, из основной памяти в регистр cx;

в) mov si, 1000 - запись числа 1000 в регистр si;

г) mov word ptr [di+555], 4 - запись числа 4 длиной 2 байта в основную память по адресу [di+555].

Для загрузки «прямого» адреса в сегментный регистр используются две команды пересылки:

mov ax, code

mov ds, ax

Команда загрузки исполнительного адреса

LEA <операнд l>, <операнд 2> ;вычисляет исполнительный адрес второго операнда и помещает его в поле, на которое указывает первый операнд.

Приведем примеры:

а) lea bx, exword - в регистр bx загружается исполнительный адрес exword;

б) lea bx, [di+10] - в регистр bx загружается адрес l0-го байта относительно точки, на которую указывает адрес в регистре di.

Команды загрузки указателя.

LDS <регистр >,<операнд 2>

LЕS <регистр >,<операнд 2>

Команда LDS загружает в регистры DS :<регистр> указатель (< адрес сегмента> : <исполнительный адрес>), расположенный по адресу, указанному во втором операнде.

Команда LЕS загружает указатель по адресу, расположенному во втором операнде, в регистры ЕS:<регистр>.

Например:

lds si, exword ;т.e. слово (2 байта) по адресу exword загружается в si, а по адресу exword+ 2 - в ds.

Команда записи в стек

На вершину стека всегда указывает регистр SP. Для обращения к данным в стеке, с использованием режимов адресации памяти, при которых указателем базы является регистр BP, можно использовать инструкцию MOV. Например, инструкция:

mov ax,[bp+4] ;загружает регистр AX содержимым слова в сегменте стека со смещением BP+4.

Однако чаще к стеку обращаются с помощью инструкций PUSH и POP.

PUSH <операнд> ;организует запись в стек слова, адрес которого указан в операнде.

Например:

push аx - запомнить содержимое регистра аx в стеке.

POP <операнд> ;организует чтение из стека последнего слова и помещает его по адресу, указанному во втором операнде.

Например:

pop аx - восстановить содержимое регистра аx из стека.

Например, инструкции:

mov ax,1

push ax

pop bx

заносят значение (равное 1) в регистре AX в вершину стека, затем извлекают 1 из вершины стека и сохраняют ее в BX.