Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Битовые смещения


Автор: azesmcar 22.12.2004, 14:41
Как на ассемблере делать битовые смещения??? Оператор << на C++

Автор: Akina 22.12.2004, 15:36
shr/shl

Автор: azesmcar 22.12.2004, 15:41
Спасибо..он смещает на один бит??? т.е. если на С написать >> 12 на ассемблере это выглядет как loop??

Автор: azesmcar 22.12.2004, 15:57
Ладно, этот вопрос ясен...shr/shl принимает два параметр (выражаяс с++-овским языком)

Код

__asm
{
  mov al, p
  mov ebx, 7
  sub ebx, nBitOffset
  shl al, ebx
}



Не компилирует, нельзя смещать байт в размере другого регистра, или какой нибудь переменной??? Если написать shl al, 7 все нормально работает

Автор: Akina 22.12.2004, 17:22
SHL что_сдвигать на_сколько_сдвигать

что_сдвигать = регистр или участок памяти (db, dw, dd)
на_сколько_сдвигать = число (1-32) или CL

другими словами

Код

__asm
{
 mov al, p
 mov cl, nBit
 shl al, cl
}

Автор: azesmcar 22.12.2004, 17:47
теперь ясно, я тоже самое писал только вместо cl писал bl...
Так заработало...Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)