ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Команды передачи данных.Группу команд передачи данных можно условно разделить на четыре части: общие, ввода/вывода, адресные и флагов. Эти команды представлены в таблице 3.1. Таблица 3.1. Команды передачи данных.
Рассмотрим некоторые из них. Команда пересылки данных MOV (move data) – на место первого операнда пересылается значение второго операнда, флаги не меняет: MOV dst, src где dst – оператор получатель, src – операнд отправитель. Допустимые комбинации операндов:
Команда обмена данными XCHG (exchange) – меняет местами значения своих операндов (они должны быть либо байтами, либо словами), флаги не меняются: XCHG dst, src Допустимые типы операндов команды XCHG:
Examle 3.4. Фрагмент программы использования команды XCHG. ; описание данных count db 10h, 20h total dw 1234h var16 dw? ; фрагмент кода программы XCHG AX, total; XCHG AX, BX; XCHG DL, AL; XCHG count, AL; XCHG var16, AX; Команда PUSH (PUSHed) - включает в стек слово операнда, a команда POP (POPed) - извлекает слово из стека. PUSH src. POP dst В командах PUSH и POP допустимы следующие операнды: dst - r16, m16, sr (кроме CS) src - r16, m16, sr Examle 3.5. Фрагмент программы использования команд PUSH и POP. ; описание данных var16 dw 1234h ; фрагмент кода программы PUSH BX; PUSH var16; POP BX; POP var16; ; доступ к элементам стека MOV BP, SP; MOV AX, [BP]; Команда преобразования XLAT применяется для быстрого преобразования символов из одного кода в другой. Она заменяет содержимое аккумулятора AL на байт из 256-байтовой таблицы, начальный адрес которой находится в регистре BX, а восьмибитовое смещение - в регистре AL. В качестве сегментного используется регистр DS. Некоторые ассемблеры допускают мнемонику XLATB, подчеркивающую, что команда преобразует байты. XLAT [table] XLATB [table] где [table] – необязательный параметр, представляющий собой символическое имя начального адреса таблицы преобразования. На рисунке 3.1. показан механизм работы команды перекодировки таблиц XLAT. Examle 3.6. Фрагмент программы использования команды XLAT. ; Преобразование чисел от 0 до 15 в 16-ое число ; описание данных tablehex db ‘0123456789ABCDEF’; Таблица для преобразования ; фрагмент кода программы MOV BX, OFFSET tablehex; В BX поместить смещение tablehex MOV AL, 10; В AL поместить число для преобразования XLAT; Преобразовать число в 16-ое число Команда LEA извлекает из памяти 16-битовый адрес и помещает его в один из общих регистров. Практически эта команда дублирует один из вариантов команды MOV, но выполняется быстрее. Команда LDS извлекает из памяти 32-битовый адрес и помещает первое считанное из памяти слово в заданный общий регистр, а второе - в сегментный регистр DS. Команда LES извлекает из памяти 32-битовый адрес и помещает первое считанное из памяти слово в заданный общий регистр, а второе - в сегментный регистр ES. LEA reg, mem LDS reg, mem LES reg, mem Examle 3.7. Фрагмент программы использования команд LES, LDS и LEA. ; описание данных str_1 DB ‘Hello’; str_1 содержит смещение строки ‘Hello’ str_2 DB 50 DUP (‘ ‘); str_pnt DD str_1; str_pnt содержит полный указатель переменной str_1 ; фрагмент кода программы LEA SI, str_1; LEA DI, str_2; MOV AL, [SI]; MOV [DI], AL; LES BX, str_pnt; LDS BX, str_pnt; Не нашли, что искали? Воспользуйтесь поиском:
|