Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. Cохранение данных в двоичных файлах.
  2. CТРУКТУРЫ ДАННЫХ И АЛГОРИТМЫ
  3. I)Однофакторный дисперсионный анализ (выполняется с применением программы «Однофакторный дисперсионный анализ» надстройки «Анализ данных» пакета Microsoft Excel).
  4. MEDLINE - это база данных, которая содержит...
  5. Алфавит, базовые типы и описание данных.
  6. АНАЛИЗ ДАННЫХ
  7. Анализ данных и параметры хранилища загрузки
  8. Анализ данных и подготовка заключительного отчета
  9. Анализ полученных данных социологического опроса
  10. Анализ статистических данных по объему продукции (работ, услуг), номенклатуре, ассортименту.

 

 

Мнемоника Формат Пояснение
Команды общего назначения
MOV MOV приемник, источник Переслать значение
push PUSH источник Поместить в стек
pop PОР приемник Извлечь из стека
XCHG XCHG приемник, источник Обменять значения
Команды ввода-вывода
IN IN аккумулятор, порт Читать из порта
OUT OUT порт, аккумулятор Записать в порт
Команды пересылки адреса
LEA LEA регистр16, память16 Загрузить исполнительный адрес
LDS LDS регистр 16, память32 Загрузить в peгистp DS l6 полный адрес
L.ES LES регистр 16. память32 Загрузить в peгистp ES I6 полный адрес

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

mov ax,Table {Пересылка слова из памяти в АХ}

mov Table,ah (Пересылка байта из АН в память}

mov ds,ax {Пересылка в сегмент данных}

mov es:[bx],ax {Пересылка слова в память: базовая адресация с заменой сегмента} mov ch,-17 {Переслать константу в регистр}

mov Table,$FF {Переслать константу в память}

С помощью МОV нельзя пересылать:

• из памяти в память, например,

mov Mem1, Mem2

следует использовать

mov ax,Mem2

mov Mem1,ax

• константу или переменную в DS, например, нельзя

mov DS, Data_Seg

нужно:

mov ax, Data_Seg

mov ds,ax

• один сегментный регистр в другой, например, нельзя

mov es, ds

но можно

mov ax, ds

mov es, ax

• в регистр CS; значение этого регистра (сегмента кода) автоматически меняется при выполнении дальних команд CALL и JMP; кроме того, он загружается из стека при выполнении команды RETF (выход из дальней процедуры).

 

Для временного сохранения регистров и данных, а также для обмена значениями между регистрами широко используются стековые команды PUSH и POP. Каждая них работает со словом, т.е. в стек нельзя поместить или извлечь из него одиночный байт. При выполнении PUSH вначале уменьшается на 2 содержимое указателя SP, затем операнд помещается по адресу SS: SP.

При извлечении из стека сначала читается память по адресу SS: SP, а затем SP увеличивается на 2. Таким образом, при запоминании указатель вершины стека SP смещается к младшим адресам, а при освобожден к старшим. При работе со стеком следует помнить о специфике использования стековой памяти («последним пришел - первым ушел»), а также о том, что эта память интенсивно используется при вызове процедур, т.е. состояние стека к моменту выхода из процедуры должно быть строго согласовано с дальнейшей работой программы. Первое условие определяет порядок извлечения данных из стека - он должен быть обратным порядку, в котором эти данные помещались в стек. Второе условие фактически означает, что после выхода из процедуры указатель SP должен содержать то же смещение, что и к моменту входа в нее. Иными словами, процедура не должна «забыть» в стеке лишнее слово или взять из него больше нужного.

Команда загрузки адреса LEA загружает в регистр адрес (смещение) нужного участка памяти. Этого же можно достичь с помощью зарезервированного слова OFFSET, стоящего перед именем переменной. Например:

var

X: Word;

asm

mov ax, OFFSET X (Загружаем смещение X в AX}

lea ax, X {To же действие}

end;

Разница состоит в том, что в случае команды LEA разрешается использовать индексную адресацию, что особенно удобно при пересылке массивов данных.

Две другие команды адресной загрузки - LDS и LES загружают первое
16- разрядное слово из источника в регистр-приемник, а затем следующее слово в регистр DS или ES, т.е. они рассчитаны на загрузку полного адреса операнда.

 




Дата добавления: 2014-12-19; просмотров: 94 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав