Здравствуйте, artgonch, Вы писали:
A>Есть такой код:
A>A>PROC IsBitsEqual NEAR
A> mov [Result],0
A> rcl ax,1
A> jc @@AX_CARRY
A> rcl dx,1
A> jc @@EXIT
A> mov [Result],1
A> jmp @@EXIT
A>@@AX_CARRY:
A> rcl dx,1
A> jnc @@EXIT
A> mov [Result],1
A>@@EXIT:
A> ret
A>ENDP IsBitsEqual
A>
A>Но при сдвигах во флаг переноса всегда записывается нуль, хотя я подбирал такие числа в DX и в AX, что так есть скраю и в центре единицы. В чем я неправ?
Насколько я понял, здесь сравниваются старшие биты двух слов. (Я бы сделал через исключающее или, после чего сравнил с нулем.)
Нельзя ли поподробней, какие данные были на входе, и что получалось в результате?