вопрос про смещение, asm

программирование assembler ASM

Есть такой код:
MOV ESI,DWORD PTR DS:[EBX+31C]
MOV EDX,DWORD PTR DS:[ESI+218]

Потребовалось получить значение EDX для сравнения ее с нулем, используя одну команду:
CMP DWORD PTR DS:[EBX+534],0

Но в первом случае DS:[00229CC8]=00000000
а во втором DS:[00222ACC]=FFFFFFFF
Почему? Ведь 31C+218=534, почему адрес другой получается?

Примечание:
>>Не совсем понял вопрос - почему нельзя получить значение EDX напрямую?
Да, через смещение, содержащееся в EBX.

Сделал так:
CMP DWORD PTR DS:[EBX+7730],0
Работает, но не понятно почему...

Примечание:
Я вас запутал
Мне просто нужно значение EDX после первых двух приведенных операций)

Примечание:
>>"Ну, так и получите это значение:"
Потребовалось получить значение EDX для сравнения ее с нулем, используя одну команду, не более.
Проблему то я решил уже с получением значения, но так и не понял почему у меня это получается через EBX+7730, а не через EBX+534, хотя 31C+218=534...
Ответы:
Не совсем понял вопрос - почему нельзя получить значение EDX напрямую?
Погоди, EDX и EBX это регистры-аккумуляторы.
Выражение DS:[EBX+7730] фактически означает "получи адрес в виде [сегмент данных]:[смещение, состоящее из суммы ЕВХ и 7730]. Это НЕ даст содержание EDX.
Ну, так и получите это значение:


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.