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

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

        cld
        lodsb
        lodsb
        lodsb
        lodsb
        stosb
        lodsb
        stosb

        invoke atoi, [month]

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

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

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

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

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

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