|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 29, 2003 01:12:58 В книге В. Юрова "Assembler: учебник" урок №9 стр.189 про команду test написано следующее (в скобках мои замечания): Для проверки состояния заданных бит применяется команда test операнд_1,операнд_2 Проверяемые биты операнд_1 в маске (операнд_2) должны иметь единичное значение. Алгоритм работы команды test подобен алгоритму команды and, но он не меняет значения операнд_1. Результатом команды является установка значения флага нуля zf: если zf=0, то в результате логического умножения получился нулевой результат, то есть один единичный бит маски не совпал с соответствующим единичным битом операнд_1;(усл.1) если zf=1, то в результате логического умножения получился ненулевой результат, то есть хотя бы один единичный бит маски совпал с соответствующим единичным битом операнд_1.(усл.2 см. прим. 1) test eax,00000010h jz ml ;переход если 4 бит равен 1(см. прим.2) Прим.1: усл.1 и усл.2 на мой взгляд противоречат друг другу: если zf устанавливается в 0 если хотябы один бит не совпал, а в 1 если хотя бы один бит совпал то получается если все биты совпали zf должен установиться в какое-то промежуточное положение? Прим.2: мне кажется, что переход будет если 4 бит не равен 1 Подскажите я сошел с ума или в книге ошибка? И если не сложно растолкуйте когда сработает jz, а когда jnz. |
|
|
Дата: Июн 29, 2003 03:13:44 если zf устанавливается в 0 если хотябы один бит не совпал, а в 1 если хотя бы один бит совпал то получается если все биты совпали zf должен установиться в какое-то промежуточное положение? Нет. Ты просто немного не допонял. Лучше читать Абеля. А так - должны СОВПАСТЬ ВСЕ БИТЫ. Только тогда поднимется zf. |
|
|
Дата: Июн 30, 2003 09:03:01 "если zf=0, то в результате логического умножения получился нулевой результат" Ummm... I think it is the other way around. ZF=1 if the DATA into OPERAND1 WOULD have BEEN ZERO after AND. TEST 000F, FFFF // ZF=0 TEST 000F, FFF0 // ZF=1 TEST 000F, FFF1 // ZF=0 |
|
|
Дата: Июн 30, 2003 17:03:22 test просто делает and, только без модификации регистра приемника. вот и вся разница. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.039 |