redsabien
@redsabien

Как работает этот assembler code?

этот код рабочий но
mov eax,0
do:
  mov edx,48
  add edx,eax
  mov dword [temp+eax],edx
  inc eax
  cmp eax,10
  jne do

смущает строка
mov dword [temp+eax], edx

не могу понять как он прибавляет значение eax каждый раз когда оно меняется в одной команде mov ?
подскажите как это получается, что это за магия такая
  • Вопрос задан
  • 342 просмотра
Пригласить эксперта
Ответы на вопрос 2
15432
@15432
Системный программист ^_^
На Си это выглядит примерно как

int temp[10];
int i ;
for ( i = 0; i != 10; ++i)
{
temp[i] = i + 48;
//Не уверен, может даже *(int*)((char*)temp + i) = i + 48
}

Единственное сомнение по поводу +eax... Для индексации dword вроде надо еще на 4 умножить

В любом случае, eax модифицируется только в команде inc
Ответ написан
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
Команда mov делает только перенос данных. В данном случае - поместит значение EDX по адресу, равному сумме адреса области temp и EAX. Перемещение точки записи происходит в команде inc - и вот тут уже магия :) Я не вижу описания temp, но мотнуть inc должен на длину описания типа, насколько я помню...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы