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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2015, 20:09   #1
Jeckor
Пользователь
 
Регистрация: 27.10.2013
Сообщений: 22
По умолчанию Обращение к элементу массива

Есть следующий код:

Код:
TITLE FromDecimalToBinary
.686
.model flat             
option casemap:none           ;различие маленьких и больших букв
 
.data 
    current_number DWORD 20     ;первоначальное десятичное число, которое переводим в двоичный код/в процессе изменяется
    current_res DWORD 0         ;индекс массива результата
.const
    diver DWORD 2               ;система числения, в которую переводим
.data?
    binary_res DWORD 5 dup(?)   ;массив, где хранится результат - двочиный код числа 20
.code
_start:
    lea esi, binary_res
cycle:
    xor eax, eax
    xor ecx, ecx
    mov eax, current_number
    mov edx, 0
    div diver                   ;eax = целая часть, edx = остаток
    mov [esi+current_res], edx  ;запись результата по текущему индексу <----ОШИБКА
    mov current_number, eax
    add current_res, 4
    mov ecx, current_number
    cmp ecx, diver
    jb exit
    jmp cycle
exit:
    ret
end _start
В определенный момент (в строке mov [esi+current_res], edx) хочу записать в массив остаток от деления, который находится в edx. Отлаживаю через OllyDbg. Ошибок нет, но и выполнять он эту строку не хочет. Если написать просто:

Код:
mov [esi], edx
или
Код:
mov [esi+4], edx
то все нормально. Почему я не могу указать нужный мне индекс через переменную current_res?
Jeckor вне форума Ответить с цитированием
Старый 28.06.2015, 21:01   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Тебе вместо current_res нужно использовать ecx.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.06.2015, 21:08   #3
Jeckor
Пользователь
 
Регистрация: 27.10.2013
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тебе вместо current_res нужно использовать ecx.
Спасибо, заработало)
Jeckor вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обращение к элементу строки Form_13 Паскаль, Turbo Pascal, PascalABC.NET 2 13.10.2011 13:19
Обращение к предыдущему/следующему элементу массива feras Общие вопросы Delphi 1 08.06.2011 21:29
нужно организовать обращение к элементу массива в классе! unsurpassed Помощь студентам 0 13.01.2011 11:53
Обращение к первому и последнему элементу отсортированного массива СветланаRerum Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 17.05.2010 18:56
Обращение к предыдущему/следующему элементу массива по его адресу. InternetStranger Общие вопросы Delphi 9 11.02.2010 06:35