Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите проанализировать комманду

9.8K
11 апреля 2006 года
linker3
28 / / 29.11.2005
Всем доброго времени суток! Вот столкнулся с такой командой:
Сегмент данных: num dd '8'
....
В сегменте кода следующие:
cmp word ptr num, ('8' shl 8)+1
....
Помогите пожалуйста с командой в сегменте данных. Пожалуйста напишите что она делает, если возможно то поподробнее.
P.S. Тот факт, что команда сравнивает я знаю, но как и что конкретно :-( Очень нада разобрать данную комманду!
5.3K
12 апреля 2006 года
r000n_m
177 / / 26.02.2006
Цитата:
Originally posted by linker3 num dd '8'


Объявляется переменная num длиной в 4 байта со значением символа 8 (т.е. 38h)

Цитата:
Originally posted by linker3
cmp word ptr num, ('8' shl 8)+1


сравнивается слово num и (38h, сдвинутый влево на восемь разрядов)+1
Но по этим двум строчкам понять, зачем она это делает, конечно,нельзя

9.8K
12 апреля 2006 года
linker3
28 / / 29.11.2005
Цитата:
Originally posted by r000n_m
Объявляется переменная num длиной в 4 байта со значением символа 8 (т.е. 38h)

сравнивается слово num и (38h, сдвинутый влево на восемь разрядов)+1
Но по этим двум строчкам понять, зачем она это делает, конечно,нельзя



А что будет именно во втором опернде? После того как сместиться на восем разрядов 38h то это число перескочит в старший разряд, а вот что будет после того как к нему добавят один, какой вид примет опернад в этом случае?

551
12 апреля 2006 года
Pavia
357 / / 22.04.2004
Цитата:
Originally posted by linker3
А что будет именно во втором опернде? После того как сместиться на восем разрядов 38h то это число перескочит в старший разряд, а вот что будет после того как к нему добавят один, какой вид примет опернад в этом случае?


CMP команда сравнения, она только выставляет флаги не изменяя значения оперендов.
('8' shl 8)+1 -это константа просто она так хитро задается
'8' = 38h
'8' shl 8 = 3800h
('8' shl 8)+1=3801h
cmp word ptr num, ('8' shl 8)+1
Сранивает слово из памити по адрессу num со значением 3801h

9.8K
12 апреля 2006 года
linker3
28 / / 29.11.2005
Цитата:
Originally posted by Pavia
CMP команда сравнения, она только выставляет флаги не изменяя значения оперендов.
('8' shl 8)+1 -это константа просто она так хитро задается
'8' = 38h
'8' shl 8 = 3800h
('8' shl 8)+1=3801h
cmp word ptr num, ('8' shl 8)+1
Сранивает слово из памити по адрессу num со значением 3801h


Спасибо за подробный ответ!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог