Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
73
Добавлен:
20.05.2015
Размер:
297.98 Кб
Скачать

Тема 2. Основные стадии выполнения команды

Лекция 4. Команды обмена данными

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

2. Команды работы со стеком.

3. Команды передачи управления

4. Цепочечные команды

Алгоритм представляет собой формализованное описание логики работы программы. Способы такой формализации могут быть разными: от текстового описания последовательности действий до алгоритма развитых case-систем. Последовательность действий, описываемых алгоритмом, может быть:

линейной — все действия выполняются поочередно, друг за другом;

нелинейной — в алгоритме есть точки ветвления, в которых должно приниматься решение о месте, с которого программа продолжит свое выполнение, причем решение может носить условный или безусловный характер.

Линейные участки алгоритма обычно содержат команды манипуляции данными, вычисления значений выражений, преобразования данных. В точках ветвления размещают команды сравнения, различных видов перехода, вызова подпрограмм и некоторые другие.

Еще раз обратимся к функциональной классификации целочисленных машинных команд процессора. Из всей совокупности этих команд на линейных участках работают следующие группы:

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

арифметические команды;

логические команды;

команды управления состоянием процессора.

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

собственно пересылки данных;

ввода из порта и вывода в порт;

работы с адресами и указателями;

преобразования данных;

работы со стеком.

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

К группе команд пересылки данных относятся следующие команды:

mov <операнд назначения>, <операнд-источник>

xchg <операнд1>, <операнд2>

MOV — это основная команда пересылки данных.

Командой MOV нельзя осуществить пересылку из одной области памяти в другую. Если такая необходимость возникает, то нужно использовать в качестве промежуточного буфера любой доступный в данный момент регистр общего назначения. Пример (фрагмент программы для пересылки байта из ячейки fls в ячейку fid):

masm

model small

.data

fls db 5

fid db ?

.code

start:

mov al, fls

mov fld, al

end start

Нельзя загрузить в сегментный регистр значение непосредственно из памяти. Для такой загрузки требуется промежуточный объект. Это может быть регистр общего назначения или стек.

Нельзя переслать содержимое одного сегментного регистра в другой сегментный регистр. Это объясняется тем, что в системе команд нет соответствующего кода операции. Но необходимость в таком действии часто возникает. Выполнить такую пересылку можно, используя в качестве промежуточных регистры общего назначения.

Нельзя использовать сегментный регистр CS в качестве операнда назначения. Причина – в архитектуре процессора IA-32 пара CS:IP содержит адрес команды, которая должна выполняться следующей. Изменение командой MOV содержимого регистра CS фактически означало бы операцию перехода, а не пересылки, что недопустимо.

Особенность использования команды MOV определяет необходимо уточнения типа используемых операндов. Для этого существует специальный оператор ассемблера PTR. Правильно записать приведенные ранее команды можно следующим образом (inc-команда инкремента(+1), dec-декремент(-1)):

mov ax,word ptr[bx] ;если [bx] адресует слово в памяти

inc byte ptr[bx] ;если [bx] адресует байт в памяти

dec dword ptr[bx] ;если [bх] адресует двойное слово в памяти

mov word ptr[bx],0 ;если [bх] адресует слово в памяти

Оператор PTR используется во всех сомнительных относительно согласования размеров операндов случаях. Также этот оператор нужно применять, когда требуется принудительно поменять размерность операндов.

Соседние файлы в папке УМК_Орг_ЭВМ