Задать вопрос

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

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

        cld
        lodsb
        lodsb
        lodsb
        lodsb
        stosb
        lodsb
        stosb

        invoke atoi, [month]

atoi возвращает ноль и вылетает, не могу понять почему
  • Вопрос задан
  • 101 просмотр
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Графический дизайнер PRO
    15 месяцев
    Далее
  • Нетология
    Фронтенд-разработчик
    11 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
Я не знаю, что такое month — но, по всей видимости, этот макрос надо вызывать invoke atoi, month.

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

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

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

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

Похожие вопросы