Сдвиг в x86 очень прост даже для больших структур памяти.
1) Установка или сброс флага переноса зависит от того, что вы будете считать первым битом (LSB) результата.
2) Нет необходимости извлекать данные из регистров, вы можете сразу сдвигать 32 бита в памяти, например:
rcr dword ptr[edx], 1
или даже лучше
rcr dword ptr[edx + ecx *4], 1
, где ecx - счетчик цикла и edxуказатель памяти.
2) Сохранить последний сдвинутый бит переноса
РЕДАКТИРОВАТЬ: В памяти вы можете сдвинуть 32 бит и сразу забыть о назначении памяти, сдвинуть 32-битные альтернативные слова, чтобы увеличить скорость выполнения.