Почему atoi возвращает в EAX 0, хотя строка подается с символа цифры?

lea esi, [dateString]
        lea edi, [month]

        cld
        lodsb
        lodsb
        lodsb
        lodsb
        stosb
        lodsb
        stosb

        invoke atoi, [month]

atoi возвращает ноль и вылетает, не могу понять почему
  • Вопрос задан
  • 49 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
Я не знаю, что такое month — но, по всей видимости, этот макрос надо вызывать invoke atoi, month.

Потому что [month] — это разыменование. А нам адрес нужен.

Так возвращает ноль или вылетает, я не понял? Если случился вылет, в eax может быть что угодно.

С lea edi, [month] всё верно — lea не разыменовывает, а грузит адрес. Хотя ассемблер, по идее, должен выдать обычный mov edi, month.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
08 мар. 2021, в 10:02
75000 руб./за проект
08 мар. 2021, в 10:00
700 руб./за проект
08 мар. 2021, в 08:37
3000 руб./за проект