Да - CL даст вам EF
, а CH даст вам CD
в значении, которое вы указали выше. Так как они вам не нужны, вам придется сделать смену, чтобы получить байты в нужных местах:
mov ebx, ecx
shr ebx, 8
Теперь BH будет иметь AB
, а BL будет иметь CD
.
Edit: Из вашего комментария вам явно не нужно значение в BH - скорее, вы просто хотите манипулировать этим конкретным байтом, не затрагивая остальную часть ECX. В этом случае, вероятно, проще всего сделать что-то вроде этого:
ror ecx, 16
not cl // placeholder for the manipulation
rol ecx, 16
Это просто вращает ECX, поэтому интересующий нас байт находится в CL, затем манипулирует CL, а затем поворачивает ECX назад, чтобы байты были там, где они начинались. Я должен добавить, что, хотя это просто, на некоторых процессорах это будет довольно медленно. У Pentium IV не было переключателя ствола, поэтому для поворота требуется время, пропорциональное количеству бит, на которые вы перемещаетесь. Хуже того, манипулирование CL с последующим использованием ECX может (и в этом случае, вероятно, приведет) к остановке Partial Register * . Будет ли это важно для вас, будет зависеть от того, что вы пытаетесь выполнить с этим, и будет ли оно окружено другими инструкциями, которые можно выполнить во время PRS.