Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
Ассемблер
(Модератор:
Tuborg
) > Тема:
test ????
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: test ???? (Прочитано 6395 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
RaptuGava
Гость
test ????
«
:
29-12-2003 13:13 »
ХАЙ АЛЛ!:roll:
обяснить мне ктонить следующий кусок кода
call Какаянить ф-ия
test eax,eax
jz кудата
я Непонял :?: если test выполняет логичесоке умножение при этом ничего неизменяя кромя флагов
нафига это надо если результат постоянно будет один и тотже)
Спасибо заранее !
Записан
SlavaI
Главный специалист
Offline
test ????
«
Ответ #1 :
29-12-2003 14:54 »
Это равнозначно следующему коду
if(!f())//call потом test eax,eax
{
goto error;
}
ф-ция возвращает результат в eax, потом его проверяют. test eax,eax и есть проверка на ноль. Если eax==0x0, то 0x0 | 0x0 = 0x0 то есть результат сравнения ноль и zf==1, а если eax не ноль, например eax==0xc0b, то 0xc0b | 0xc0b = 0xc0b и zf будет ноль, так как результат операции не ноль.
P.S. Вроде не напутал test записывает 1 в флаг zf если результат ноль.
Записан
Mouse
Молодой специалист
Offline
test ????
«
Ответ #2 :
29-12-2003 15:17 »
RaptuGava
, проще говоря, "test eax,eax" проверяет, равно ли нулю содержиммое eax. Если eax = 0, zf устанавливается = 1 и совершается переход по jz (Jump if Zero). А флаг zf устанавливается именно test'ом. Иначе, если (eax != 0), то переход не осуществляется.
Короче, если (eax == 0), то прыгаем по jz, иначе jz не выполняется.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
Ассемблер
(Модератор:
Tuborg
) > Тема:
test ????
Загружается...