АРХИВ ФОРУМА eXeL@B
https://exelab.ru/f/

   

oops bt edx,eax подскажите плиз что делает bt edx,eax если edx=00d12345...


oops bt edx,eax подскажите плиз что делает bt edx,eax если edx=00d12345 eax=3FF
как я понял из описания в CF устанавлвается если совпадает бит из edx номер которого в eax
но в eax=1111111111b
какой бит с каким он в данном случае сравнивает??
если можно, то напишите как в учебнике :) ну как там про xor, and, or описывается
01010010 xor
10010011
------------
11000001

ну типа того :)
MoonShiner :: Не совпадает, а равен 1. А также установит CF в значение проверяемого бита. А если значение eax превышает максимальное количество битов edx (сколько это - считай сам:-) то ХЗ че будет:) Но думаю будет 0. Мне лень смотреть в отладчике, глянь сам:)

Gloomy :: oops
› BT база, смещение
База - это регистр или переменная, смещение - число или регистр. В твоем случае в команде BT edx,eax проверяется бит, установленный в 1 в регистре edx по смещению, указанному в регистре eax. Если edx=00d12345h=110100010010001101000101b, смещение в eax=3FFh=1Fh, т.е. проверяется 31 бит регистра edx. В данном случае бит равен 0 (смотри на число в edx и считай биты от нуля справа налево). Команда BT используется так:

BT eax,0Ah ; проверяем 10тый бит в регистре eax
jc _b1_ ; прыгаем если бит установлен в 1






   
Видеокурс ВЗЛОМ