|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
MOV BX,OFFSET CharString
MOV AL,[BX + 8]
MOV SI,6 MOV AL,[CharString + SI + 2]
MOV BX.OFFSET CharString MOV DI,8 MOV AL,[BX + DI] MOV SI,OFFSET CharString MOV BX,8 MOV AL,[SI + BX] MOV BX,OFFSET CharString MOV SI,7 MOV AL,[BX + SI + 1]
В приведенном примере команда OFFSET загружает начальный адрес цепочки ABCDEFGHIJ относительно начала сегмента данных. Знак @ загружает адрес начала сегмента, имя которого стоит за этим знаком. В нашем примере сегмента данных DATA. Если возникает необходимость сменить сегмент данных, то это можно сделать, например следующим образом:
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 такта. Отметим, что эта команда не работает с сегментными регистрами.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |