Доброе время суток. Извините, если туплю, но что-то ничего хитрого на ум не приходит. Допустим есть у меня 8битный al. Можно ли хитро как-то осуществить циклический сдвиг внутри него отличного от 8 числа бит? Например, циклически сдвинуть влево только младшие 4 бита, а остальные без изменения оставить...
Да не вопрос, давайте многими командами =) Кстати, к примеру 00001011 сдвигаем 4, да, а вот на ^^^ эти биты мне кстати будет плевать, что там изгадится или нет, главное чтоб XXXX0111 получилось.
mov al,N mov ah,al and ax,0f0fh mov ecx,X ;Shift @@: shl al,1 cmp al,0fh setg al loop @B and al,0fh or al,ah
гммм что-то вроде shl al, 2 mov ah, al shr ah, 5 and ah, 3 or al, ah циклический сдвиг влево пяти бит на два бита
KeSqueer Ступил... mov al,N mov ah,al and ax,0f0fh mov ecx,X ;Shift @@: shl al,1 cmp al,0fh setg dl or al,dl loop @B and al,0fh or al,ah
Эм, это конечно круто. Но я заведомо не буду знать, сколько бит из регистра мне надо будет циклически сдвигать. Вдруг 5 из 8. Или я недопонял код? С четырьмя-то да, красиво получается...
Honorary_BoT Дык тебе и дали реализацию "например". У меня - чтоб алгоритм прочуйствовать, у scf наиболее красиво (но без сохранения старших 4 бит). Кстати, если не секрет - какая от этого практическая польза?