ХАНДЫФАР

Функция StringToInteger анализирует строку, завершающуюся (\0) или 0, интерпретируя её содержимое как целое число, и возвращает это число.

Параметры:

  • AX: Указатель на строку, завершающуюся (\0) или 0, содержащую целое число.

Возвращаемое значение:

  • AX: Целочисленное число, полученное из строки.

Состояние флагов:

  • Функция не изменяет состояние флагов.

Особенности:

  • Функция не изменяет значения регистров, кроме AX.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string_db "У меня есть 154 рубля\0"
  6. ____fmtout db "Он сказал, что у него "
  7. __________ db "есть только %d рубля!\0"
  8. data ends
  9. code segment public
  10. ____assume _ds:data, cs:code
  11. ____include Handyfar.inc
  12. ____main proc
  13. ________call____SetDataSegment
  14. ________lea_____ax, ds:[string]
  15. ________call____StringToInteger
  16. ________push____ax
  17. ________lea_____ax, ds:[fmtout]
  18. ________call____PrintFormatString
  19. ________add_____sp, 2
  20. ________xor_____al, al
  21. ________call____ExitProcess
  22. ____main endp
  23. code ends
  24. end main
Функция StringToInteger анализирует строку, завершающуюся (\0) или 0, интерпретируя её содержимое как целое число, и возвращает это число.

Параметры:

  • AX: Указатель на строку, завершающуюся (\0) или 0, содержащую целое число.

Возвращаемое значение:

  • AX: Целочисленное число, полученное из строки.

Состояние флагов:

  • Функция не изменяет состояние флагов.

Особенности:

  • Функция не изменяет значения регистров, кроме AX.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string_db "У меня есть 154 рубля\0"
  6. ____fmtout db "Он сказал, что у него есть только %d рубля!\0"
  7. data ends
  8. code segment public _______________; Начало сегмента кода
  9. ____assume _ds:data, cs:code
  10. ____include Handyfar.inc___________; Подключаем файл с функциями
  11. ____main proc _____________________; Начало процедуры main
  12. ________call____SetDataSegment_____; Вызываем процедуру SetDataSegment
  13. ________lea_____ax, ds:[string]____; Загружаем адрес переменной string в регистр ds:ax
  14. ________call____StringToInteger____; Вызываем процедуру StringToInteger(ax:string) := AX
  15. ________push____ax_________________; 2-й: Сохраняем значение регистра ax в стеке
  16. ________lea_____ax, ds:[fmtout]____; 1-й: Загружаем адрес строки формата fmtout в регистр ds:ax
  17. ________call____PrintFormatString__; Вызываем процедуру PrintFormatString(ax:fmtout, ax)
  18. ________add_____sp, 2______________; Выравниваем стек
  19. ________xor_____al, al_____________; Обнуляем регистр al
  20. ________call____ExitProcess________; Вызываем процедуру ExitProcess
  21. ____main endp _____________________; Конец процедуры main
  22. code ends _________________________; Конец сегмента кода
  23. end main __________________________; Конец файла. Точкой входа указывается процедура main
Made on
Tilda