Главная » Просмотр файлов » assembler. Учебник для вузов_Юров В.И_2003 -637с

assembler. Учебник для вузов_Юров В.И_2003 -637с (862834), страница 47

Файл №862834 assembler. Учебник для вузов_Юров В.И_2003 -637с (Юров В.И - Assembler. Учебник для вузов. 2003) 47 страницаassembler. Учебник для вузов_Юров В.И_2003 -637с (862834) страница 472021-12-22СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 47)

Преобразование BCD-числа (вариант 2);prg_9_2.asmmasmmodelsmallstack256.datalen=4;длина неупакованного BCD-числаunpck_BCDlabeldworddig_BCD db 2,4,3,6;неупакованное BCD-число 6342pck_BCD dd 0;pck_BCD=00006342.codemain:;точка входа в программуmov ax,@datamov ds.axxor ax,axmov cx.len.386;это обязательноmov eax,unpck_BCDml:shl eax,4;убираем нулевую тетрадуshld pck_BCD,eax,4 ;тетраду с цифрой заносим в поле pck_BCDshl eax,4;убираем тетраду с цифрой из еахloop ml;циклexit:;pck_BCD=00006342mov ax,4c00hendint21hmainКоманды сдвига двойной точности SHLD и SHRD позволяют осуществлять с максимально возможной скоростью вставку битовой строки из регистра в произвольное место другой (большей) строки битов в памяти и извлечение в регистр битовой подстроки из некоторой строки битов в памяти. В результате этих операцийсмежные с подстрокой биты по ее обеим сторонам остаются неизменными.206Глава 9.

Логические команды и команды сдвигаВставка битовых строкРассмотрим пример вставки битовой строки длиной 16 битов, находящейся врегистре ЕАХ, в строку памяти str, начиная с ее бита 8 (листинг 9.3). Вставляемаябитовая строка выровнена к левому краю регистра ЕАХ.Листинг 9.3. Вставка битовой строки<1><2><3><4><5><6><7><8><9><10><11><12><13><14><15><16><17><18><19><20><22><23><24><25>;prg_9_3.asmraasmmodelstack.databit_strP_str.codemain:movmovxor.386mov; правый;строкиrorshrsmall256dd HOlOlllhdd OffffOOOOhax,@datads.axax, ax-.строка для вставкивставляемая подстрока Qffffh;точка входа в программу;это обязательноeax,p_strкрай места вставки циклически переместить к краюbit_str (сохранение правого контекста):bit_str,8bit_str,16;сдвинуть строку вправо;на длину подстроки (16 битов)shld bi t_str ,eax,16 ;сдвинуть 16 битrol bit_str,8восстановить младшие 8 битexit:mov ax,4c00hint 21hend main;bi t_str=llf f f f 11Листинг 9.3 удобно исследовать в отладчике.

При этом важно понять зависимость между непосредственными значениями, используемыми в командах строк17-20, и исходными значениями. Общая методика вставки битовых строк выглядит следующим образом.1. Подогнать к правому краю строки младший бит места вставки в этой строке.Делать это нужно командой циклического сдвига, чтобы сохранить правую частьисходной строки. Величина сдвига определяется очень просто — это номер начальной позиции места вставки (строка 17).2.

Сдвинуть исходную строку вправо на количество битов, равное длине вставляемой подстроки (строка 18). Эти биты нам больше не нужны, поэтому для сдвигаиспользуется команда простого сдвига SHR.3. Командой SH LD вставить вставляемую подстроку в исходную подстроку. Передэтим, естественно, левый край вставляемой подстроки находится у левого краярегистра ЕАХ (строка 19).4. Восстановить командой циклического сдвига правую часть исходной строки(строка 20).Наибольшей эффективности при использовании этой программы можно достичь, если оформить представленную в ней последовательность команд в видемакрокоманды.

Понятие макрокоманды будет рассматриваться нами в главе 14,но сейчас важно отметить, что в данном случае она позволит нам не задумыватьсяИтоги207о настройке строк 17-20 на конкретную вставку. При изучении материала главы 14вы можете поэкспериментировать с данной программой, разработав на ее основемакрокоманду.Извлечение битовых строкРассмотрим пример извлечения 16 битов из строки в памяти bit_str, начиная сбита 8, в регистр ЕАХ (листинг 9.4). Результат следует выровнять по правому краюрегистра ЕАХ; строка bit_str не изменяется.

Этот пример можно рассматривать какобратный тому, который мы только что привели в листинге 9.3. Методика извлечения битовой подстроки, если вы разобрались с программой вставки битовой строки, не должна вызвать у вас затруднений.Листинг 9.4. Извлечение битовой строки;prg_9_4.asmmasmmodelsmallstack 256.databit_str dd llffffllh.code;строка для извлеченияmain:;точка входа в программуmov ax,@datamov ds.axxor ax,ax.386;это обязательно;левый край места извлечения циклически переместить к левому краю;строки bit_str (сохранение левого контекста)rol bit_str,8mov ebx,bit_strshld eax,ebx,16;в регистр еахror bit_str,8exit:mov ax,4c00hint 21hend mainподготовленную строку в ebx;вставить извлекаемые 16 битвосстановить старшие 8 бит;eax=0000ffffПересылка битовПо сути, программа пересылки битов является комбинацией двух предыдущих.Поэтому попробуйте самостоятельно разработать программу пересылки блокабитов из одной битовой строки в другую, взяв за основу только что рассмотренныепрограммы (см.

листинги 9.3 и 9.4). К примеру, пусть имеется две битовые строки:bit_strldd Oabcdefabhbit_str2dd 012345678hИз этих строк получите строкуbit_str2 dd 0abcd34abhИтоги9 Минимально адресуемая единица данных в процессоре — байт. Логические команды позволяют манипулировать отдельными битами. Только эти команды* в системе команд процессора позволяют работать на битовом уровне. Этим,в частности, объясняется их важность.208*Глава 9. Логические команды и команды сдвигаРабота на битовом уровне позволяет в отдельных случаях существенно сэкономить память, особенно при моделировании различных массивов, содержащиходноразрядные флаги или переключатели.Команды сдвига позволяют выполнять быстрое умножение и деление операндов на степени двойки, а также эффективное преобразование данных.Применение команд циклического сдвига и сдвига двойной точности позволяет реализовать максимально быстрые операции по рассогласованию, перемещению, вставке и извлечению битовых подстрок.Глава 10Команды передачиуправленияПрограммирование нелинейных алгоритмовКлассификация команд передачи управленияКоманды безусловной передачи управленияПонятие процедуры в языке ассемблераКоманды условной передачи управленияСредства организации циклов в языке ассемблераВ предыдущей главе мы познакомились с некоторыми командами, из которыхформируются линейные участки программы.

Каждая из них в общем случае выполняет некоторые действия по преобразованию или пересылке данных, после чегопроцессор передает управление следующей команде. Однако последовательно работают очень мало программ. Обычно в программе есть точки, в которых нужнопринять решение о том, какая команда будет выполняться следующей. Это решение может быть:Ш безусловным — в данной точке необходимо передать управление не следующейкоманде, а другой, которая находится на некотором удалении от текущей;ж условным — решение о том, какая команда будет выполняться следующей, принимается на основе анализа некоторых условий или данных.Как вы помните, программа представляет собой последовательность команди данных, занимающих определенное пространство оперативной памяти.

Это пространство памяти может либо быть непрерывным, либо состоять из несколькихфрагментов. В главе 5 нами были рассмотрены средства сегментации кода программы210Глава 10. Команды передачи управленияи ее данных. То, какая команда программы должна выполняться следующей, процессор узнает по содержимому пары регистров CS:(E)IP', в которой:Si CS — регистр сегмента кода, в котором находится физический (базовый) адрестекущего сегмента кода;ж EIP/IP — регистр указателя команды, в котором находится значение, представляющее собой смещение в памяти следующей выполняемой команды относительно начала текущего сегмента кода.ПРИМЕЧАНИЕНапомню, почему мы записываем регистры EIP/IP через косую черту.Какой конкретно регистр будет использоваться, зависит от установленных режимов адресации use!6 или use32.

Если указано use!6, тоиспользуется IP, если use32 — то EIP.Таким образом, команды передачи управления изменяют содержимое регистров CS и EIP, в результате чего процессор выбирает для выполнения не следующуюпо порядку команду программы, а команду в некотором другом участке программы. Конвейер внутри процессора при этом сбрасывается.По принципу действия команды процессора, обеспечивающие организациюпереходов в программе, можно разделить на три группы.ii Команды безусловной передачи управления:П безусловного перехода;П вызова процедуры и возврата из процедуры;D вызова программных прерываний и возврата из программных прерываний.*i Команды условной передачи управления:Р перехода по результату команды сравнения;П перехода по состоянию определенного флага;П перехода по содержимому регистра ЕСХ/СХ.ii Команды управления циклом:П организации цикла со счетчиком ЕСХ/СХ;D организации цикла со счетчиком ЕСХ/СХ с возможностью досрочного выходаиз цикла по дополнительному условию.Возникает вопрос о том, каким образом обозначается то место, куда необходимопередать управление.

Характеристики

Тип файла
PDF-файл
Размер
14,34 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее