Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2011, 19:15   #11
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Ой чего-то вы все такое городите, что аж страшно.

test dh,80h - проверить, установлен ли нулевой бит в dh
je bla-bla - если таки установлен, прыгнуть туда-то.

test аналогична операции or, с тем лишь отличием, что не меняет регистр.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 25.08.2011, 19:19   #12
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
test аналогична операции or
Не, ну ладно я вчера независимость отмечал, мне простительно, а в Москве какой праздник? )

Цитата:
TEST Test Bits

Performs a bit-wise logical AND on the value in a register or memory location (first operand) with an immediate value or the value in a register (second operand) and sets the flags in the rFLAGS register based on the result. While the AND instruction changes the contents of the destination and the flag bits, the TEST instruction changes only the flag bits.
Related Instructions
AND, CMP
TEST Test Bits
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 25.08.2011, 19:22   #13
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
проверить, установлен ли нулевой бит в dh
который бит?
может 7-ой(высший)?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.08.2011, 19:23   #14
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
Не, ну ладно я вчера независимость отмечал, мне простительно, а в Москве какой праздник? )
А в Москве конец рабочего дня, уже мозги не работают. Конечно AND, а не OR, все, пора в отпуск ))
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 25.08.2011, 19:24   #15
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
который бит?
может 7-ой(высший)?
Да, старший бит. Все, все, я больше ничего не буду писать, извините дядьку
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 30.08.2011, 15:20   #16
DimitarSergius
Новичок
Джуниор
 
Аватар для DimitarSergius
 
Регистрация: 01.02.2008
Сообщений: 2
По умолчанию

Цитата:
это шо за паноптикум, какой ещё EDX на Паскале?

Если вы умудрились загнать в 32-битную переменную с именем EDX значение регистра EDX, и далее хотите проверить, а не содержат ли биты с 8 по 15 значение, похожее на $80, то делайте, как велит сердце:
Да вы что ?!!! Конечно же ничего не умудрился... Это для удобства поназывал переменные, когда рипал код

Извините, что не отвечал, вопрос давно решен.
Кстати EDX - это у меня просто переменная была (ЭТО НЕ РЕГИСТР !!!)
Помогли на экзелабе
tmp:= (EDX >> 8) & 0x0FF
tmp >= $80

ну а точнее на Паскале у меня так:
if ((EDX shr 8) and $0FF) >= $80 then.....

Ну а чтобы совсем никого не вводить в заблуждение, напишу вот так:
var a:integer;
.....
if ((a shr 8) and $0FF) >= $80 then
.......


так как думаю я сбил с толку многих записью EDX...., хотя как я писал выше это только название переменной (var EDX:integer)

Извините за не совсем точно заданный вопрос
DimitarSerg / IREC
reversing...

Последний раз редактировалось DimitarSergius; 30.08.2011 в 16:06.
DimitarSergius вне форума Ответить с цитированием
Старый 30.08.2011, 16:53   #17
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> Помогли на экзелабе
> if ((EDX shr 8) and $0FF) >= $80 then.....

да уж, помогли... хорошо хоть обошлось без деления и плавающей точки.

Сравните с тем, что я посоветовал:

Код:
if (0 = EDX and $8000) then { тут кусок из MYPROG_0053F44B }
Проще, быстрей и понятней, не так ли?
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Содержимое регистров maxwelldream Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 15.01.2011 09:28
использование swf картинок в делфи 7 Pein95 Общие вопросы Delphi 1 03.12.2010 02:05
ИСПОЛЬЗОВАНИЕ АССЕМБЛЕРА В ДЕЛФИ! IIIeneJI Помощь студентам 2 09.02.2010 17:12
много регистров nntpaha Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 22.12.2007 19:01