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

Mov al,es:[si]; ds заменен на es

MOV SS:[BX+4],AX; DS заменен на SS

Если переменная в памяти имеет собственную метку (идентификатор), например MEMR_VAR, то её можно вызвать командой:

MOV BX,MEMR_VAR

Многие команды ассемблера оперируют байтами или словами. Если с помощью соответствующих директив переменная COST определена как слово, а переменная COUNT как байт, то команда INC COST оперирует словом, а команда INC COUNT-байтом. Однако в некоторых случаях ассемблер не может определить тип операнда. Команда INC [ВХ] производит инкремент величины, адрес которой находится в регистре ВХ, но является эта величина байтом или словом? Аналогичная ситуация возникает при использовании команды:

MOV [ВХ],1

Встретив такую команду, TASM зафиксирует ошибку. Чтобы исключить указанную неопределенность, используют атрибутные операторы, например оператор указателя PTR:

MOV WORD PTR[BX],1; запись слова

MOV BYTE PTR [BX],1; запись байта

Команды lea, lds, les.

Эти команды отличаются от других команд пересылки тем, что при их выполнении в адресуемые регистры передаются не собственно данные, а их адреса. Они занимают в памяти от 2 до 4 байт. Основное назначение этих команд - инициализация регистров перед выполнением цепочечных команд или перед выполнение подпрограмм. Команда:

Lea reg, memr

обеспечивает вычисление эффективного адреса ЕА ячейки памяти в соответствии с указанным способом адресации и загружает ЕА (а не содержимое адресуемой ячейки!) в указанный общий регистр. Например, команда: LEA BX,COL[BP] загрузит в регистр ВХ эффективный адрес ЕА, вычисленный сложением содержимого ВР и смещения COL. Такая операция может потребоваться, например, для загрузки начального адреса таблицы в регистр ВХ, перед выполнением команды XLAT. Команды:

LDS SI, memr и LES DI, memr

загружают адресную информацию из памяти в пару регистров DS:SI и ES:DI соответственно. Первое слово из памяти загружается в сегментный регистр, а второе слово в индексный регистр. Эти команды управляют коммутацией сегментов данных.

Команда xchg

Эта команда осуществляет обмен данными между источником и получателем: XCHG dst, src

Так как непосредственные операнды обменять невозможно, ни один из операндов команды XCHG не может быть константой. В двоичных кодах данная команда имеет два формата. Общий формат (длиной 2 байта) позволяет произвести обмен содержимым любой пары общих регистров, а так же обмен регистров и ячеек памяти при любом допустимом способом адресации. Укороченный формат(один байт) осуществляет обмен любого общего регистра и аккумулятора AX(AL). Команда XCHG AX,AX используется как команда пустой операции NOP, обеспечивающей задержку 3 такта. Отметим, что эта команда не работает с сегментными регистрами.

Стековые команды push и рор

Эти команды могут занимать от одного до шести байт. Они оперируют словами и автоматически изменяют указатель стека(8Р). В качестве операндов может быть указан любой из регистров микропроцессора или ячейка памяти. В МП86 не предусмотрены команды записи в стек непосредственных операндов. Для сохранения в стеке и извлечения из стека регистра флажков введены две дополнительные безоперандные команды. PUSHF и POPF.

©ВНИМАНИЕ.1 Команда POPF изменяет все флажки в регистре флажков.

Команда записи (вложения) в стек имеет мнемонику: PUSH src и производит следующие действия: SP← (SP)-2; SP← (SP)-2 TOS (src). Здесь TOS- вершина аппаратного стека, которая имеет адрес [SS:SP].

Команда извлечения из стека имеет мнемонику: POP dst и выполняет следующие действия: dst (TOS); SP←(SP) + 2.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]