Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Директива EQU
Логические команды RCL, RCR, ROL, ROR, SHL, SAR, SHR. Команды сдвига Арифметические команды ADC, ADD, SBB, SUB. Команды пересылки и сравнения MOV, СМР. Непосредственные форматы Длина непосредственных операндов Непосредственные операнды Ранее было показано использование непосредственных операндов. Команда: MOV АХ,0123Н пересылает непосредственную шест, константу 0123 в регистр АХ. Трехбайтный объектный код для этой команды есть В82301, где В8 обозначает «переслать непосредственное значение в регистр АХ», а сле-иующие два байта содержат само значение.
Многие команды имеют два операнда: перный можем in.i 11, pci истр или адрес памяти, а второй — непосредственная копе-гати. Использование непосредственного операнда Сюлсч1 н|н|>гктиино, чем определение числовой константы в сегменте данных и препинания ссылки на нее в операнде команды MOV, например, Сегмент данных: АМТ1 DW 0123H Сегмент кодов: MOV АХ,АМТ1 Длина непосредственной константы зависит от длины мерного операнда. Например, следующий непосредственный операнд является двухбайтовым, но регистр AL имеет только один байт: MOV AL.0123H (ошибка) Однако, если непосредственный операнд короче, чем получающий операнд, как в следующем примере ADD AX,25H (нет ошибки) то Ассемблер расширяет непосредственный операнд до днух байт, 0025 и записывает объектный код в виде 2500. Непосредственная константа может быть шестнадцатеричной, например, 0123Н; десятичной, например, 291 (которую Ассемблер конвертирует в шест.0123); или двоичной, например, 100100011В (которая преобразуется в шест. 0123). Ниже приведен список команд, которые допускают непосредственные операнды: AND, OR, TEST, XOR. Для создания элементов, длиннее чем два байта, можно использовать цикл или строковые команды.
Директива EQU не определяет элемент данных, но определяет значение, которое может быть использовано для постановки в других командах. Предположим, что в сегменте данных закодирована следующая директива EQU: TIMES EQU 10 Имя, в данном случае TIMES, может быть представлено любым допустимым в Ассемблере именем. Теперь, в какой бы команде или директиве не использовалось слово TIMES Ассемблер подставит значение 10. Например, Ассемблер преобразует директиву FIELDA DB TIMES DUP (?) в FIELDA DB 10 DUP (?) Имя, связанное с некоторым значением с помощью директивы EQU, может использоваться в командах, например: COUNTR EQU 05 ... MOV CX,COUNTR Ассемблер заменяет имя COUNTR в команде MOV на значение 05, создавая операнд с непосредственным значением, как если бы было закодировано: MOV CX.05 ;Ассемблер подставляет 05 Здесь преимущество директивы EQU заключается в том, что многие команды могут использовать значение, определенное по имени COUNTR. В случае, если это значение должно быть изменено, то изменению подлежит лишь одна директива EQU. Естественно, что использование директивы EQU разумно лишь там, где подстановка имеет смысл для Ассемблера. В директиве EQU можно использовать символические имена: 1.ТР EQU TOTALPAY 2. MPY EQU MUL Первый пример предполагает, что в сегменте данных программы определено имя TOTALPAY. Для любой команды, содержащей операнд ТР, Ассемблер заменит его на адрес TOTALPAY. Второй пример показывает возможность использования в программе слова MPY вместо обычного мнемокода MUL.
Дата добавления: 2014-03-11; просмотров: 407; Нарушение авторских прав Мы поможем в написании ваших работ! |