Домашнее задание для ПО 1.11 по системному программированию от 26.04.21
учебно-методический материал
Команды сдвига При выполнении команд сдвига флаг CF всегда содержит значение последнего выдвинутого бита. Существуют следующие команды cдвига: SHR ;Логический (беззнаковый) сдвиг вправо SHL ;Логический (беззнаковый) сдвиг влево SAR ;Арифметический сдвиг вправо SAL ;Арифметический сдвиг влево Следующий фрагмент иллюстрирует выполнение команды SHR: Mov cl,03 ; AX: Mov ax,10110111B ; 10110111 Shr ax,1 ; 01011011 ;Сдвиг вправо на 1 Shr ax,cl ; 00001011 ;Сдвиг вправо на 3 Первая команда SHR сдвигает содержимое регистра AX вправо на 1 бит. Выдвинутый в результате один бит попадает в флаг CF, а самый левый бит регистра AX заполняется нулем. Вторая команда cдвигает содержимое регистра15 AX еще на три бита. При этом флаг CF последовательно принимает значения 1, 1, 0, а в три левых бита в регистре AX заносятся нули. Рассмотрим действие команд арифметического вправо SAR: Mov cl,03 ; AX: Mov ax,10110111B ; 10110111 Sar ax,1 ; 11011011 ;Сдвиг вправо на 1 Sar ax,cl ; 11111011 ;Сдвиг вправо на 3 Команда SAR имеет важное отличие от команды SHR: для заполнения левого бита используется знаковый бит. Таким образом, положительные и отрицательные величины сохраняют свой знак. В приведенном примере знаковый бит содержит единицу. При сдвигах влево правые биты заполняются нулями. Таким обpазом, результат команд сдвига SHL и SAL индентичен. Сдвиг влево часто используется для удваивания чисел, а сдвиг вправо - для деления на 2. Эти операции осуществляются значительно быстрее, чем команды умножения или деления. Деление пополам нечетных чисел (например, 5 или 7) образует меньшие значения (2 или 3, соответственно) и устанавливают флаг CF в 1. Кроме того, если необходимо выполнить сдвиг на 2 бита, то использование двух команд сдвига более эффективно, чем использование одной команды с загрузкой регистра CL значением 2.
В прикреплении листинг программы на асскмблере обработка массива.
Предлагаю реализовать такое чудо через включение похожего кода в листинг программы С++
Скачать:
Вложение | Размер |
---|---|
novyy_tekstovyy_dokument.txt | 262 байта |
assembler-labs.pdf | 565.63 КБ |
Предварительный просмотр:
По теме: методические разработки, презентации и конспекты
Домашнее задание для ПО 1.11 по системному программированию от 04.02.20
Шестнадцатеричное представление Представим, что необходимо просмотреть содержимое некотоpых байт в памяти. Требуется oпределить содержимое четырех последовательных байт (двух слов), которые имеют двои...
Домашнее задание для ПО 1.11 по системному программированию от 11.02.20
Сегменты Сегментом называется область, которая начинается на границе параграфа, то есть, по любому адресу, который делится на 16 без остатка. Хотя сегмент может располагаться в любом месте памяти и им...