|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Пример 8. Пусть команда JZ L расположена по адресу 2010h, а метка L соответствует адресу 2072hПусть команда JZ L расположена по адресу 2010h, а метка L соответствует адресу 2072h. Получим машинное представление этой команды. Смещение будет равно: 2072 - (2010+2)=2072+DFEE=0060Это число со знаком может быть закодировано в 1 байте, следовательно, такой переход возможен. Используя код команды из табл. 6.4, получим машинное представление этой команды: 7460 h. Рассматриваемая команда передаст управление по адресу 2072, если к моменту ее выполнения ZF=1. При состоянии признака ZF регистра флагов, равном нулю, управление будет передано следующей команде, то есть по адресу 2012. Теперь рассмотрим пример кодирования команд, представляющих собой некоторый законченный в смысловом отношении фрагмент программы. Необходимо сложить l слов a[i], расположенных последовательно в оперативной памяти, начиная с адреса [31A6h], а результат записать по адресу [3000h]. Один из возможных вариантов программы, не использующий команду цикла, представлен в табл. 8.1. В программе предполагается, что конечный и промежуточные результаты не превышают длины слова. Количество слагаемых также занимает слово и записано перед исходным массивом, то есть по адресу 31A4h. Начальное значение IP взято произвольно.
Отметим некоторые особенности использования отдельных команд этой программы. Обнуление регистра AX осуществляется вычитанием его содержимого из самого себя. Переход к новому слагаемому достигается использованием регистровой относительной адресации с изменением на каждом шаге содержимого индексного регистра на длину слагаемого, то есть на 2. Последняя команда, засылка результата, закодирована в специальном формате работы с аккумулятором. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |