3 года назад

вопрос про смещение, 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...

RiNgOs (Гость) Assembler
3

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

8 месяцев назад assembler. вывод на консоль строки по заданному смещению

здравствуйте. подскажите как вывести на консоль строку по заданному смещению. (хочу вывести параметры командной строки, находящиеся по смещению 81h)http://s60.adikal.u/i170/1103/74/36a29c1b8e5d.jpghttp://i055.adikal.u/1103/7f/ff663bc57e8a.jpg - код программыhttp://s58.adikal.u/i162/1103/11/24e459267cb0.jpg - результаттак понимаю нужно ограничивать размер выводимых данных... если так, то как это сделать?также хочу вывести размер строки параметров (смещение 80h первый байт)http://i036.adikal.u/110...

WebMage (Гость) Нет ответов
3
9 месяцев назад Вопрос по MASM32

Чем отличается использование SDWORD от DWORD? в теории то SDWORD применяется для описания чисел со знаками, но в реальности то как обстоят дела? Я задал вопрос по причине того что на данный момент мною ещё не найдено отличия в их использовании....

iluxa1810 (Гость) 1 ответ
3
9 месяцев назад Вопрос для разбирающихся в ассемблере

Пожалуйста, помогите новичку.Задача состоит в том, чтобы скопировать все файлы из директории на дискету, а затем удалить исходную директорию (перемещение файлов).Чтобы скопировать файл нужно:1. Открыть исходный файл2. Считать его ------------ (куда считывается информация? в буфер?)3. Закрыть файл4. Создать новый файл на дискете5. Открыть новый файл6. Записать считанную информацию --- (сохранится ли до этого момента нужная информация для записи?)7. Сохранить/закрыть файлПравильное ли мое представ...

Любопытная♀ (Гость) 5 ответов
3
Ответы (3)
Беляков Михаил (Гость) 3 года назад
3

Не совсем понял вопрос - почему нельзя получить значение EDX напрямую?

Пожаловаться
Данииил (Гость) 3 года назад
3

Погоди, EDX и EBX это регистры-аккумуляторы.
Выражение DS:[EBX+7730] фактически означает "получи адрес в виде [сегмент данных]:[смещение, состоящее из суммы ЕВХ и 7730]. Это НЕ даст содержание EDX.

Чтобы сравнить EDX с нулем, нет ничего проще: cmp EDX, 0

Пожаловаться
kolbas1k (Гость) 3 года назад
3

Ну, так и получите это значение:

mov ESI, dword PTR DS:[EBX+31C]
mov EDX, dword ptr DS:[ESI+218]
test EDX, EDX
...

Пожаловаться
вопрос про смещение, asm (Assembler) - вопросы и ответы на все случаи жизни - справочник Assembler i-vopros.ru