Помогите проанализировать комманду
Сегмент данных: num dd '8'
....
В сегменте кода следующие:
cmp word ptr num, ('8' shl 8)+1
....
Помогите пожалуйста с командой в сегменте данных. Пожалуйста напишите что она делает, если возможно то поподробнее.
P.S. Тот факт, что команда сравнивает я знаю, но как и что конкретно :-( Очень нада разобрать данную комманду!
Объявляется переменная num длиной в 4 байта со значением символа 8 (т.е. 38h)
cmp word ptr num, ('8' shl 8)+1
сравнивается слово num и (38h, сдвинутый влево на восемь разрядов)+1
Но по этим двум строчкам понять, зачем она это делает, конечно,нельзя
Объявляется переменная num длиной в 4 байта со значением символа 8 (т.е. 38h)
сравнивается слово num и (38h, сдвинутый влево на восемь разрядов)+1
Но по этим двум строчкам понять, зачем она это делает, конечно,нельзя
А что будет именно во втором опернде? После того как сместиться на восем разрядов 38h то это число перескочит в старший разряд, а вот что будет после того как к нему добавят один, какой вид примет опернад в этом случае?
А что будет именно во втором опернде? После того как сместиться на восем разрядов 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
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
Спасибо за подробный ответ!