ХАНДЫФАР

Функция ScanFormatString считывает данные из стандартного входного потока и записывает данные в местоположение, указанное аргументом. Каждый аргумент должен быть указателем на переменную типа, соответствующего спецификатору типа в формате.

Пример использования функции ScanFormatString для ввода форматированной строки в которой присутствует спецификатор .

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____askUser___db "Введите символ: \0"
  6. ____fmtoutput db "\nВы ввели: \0"
  7. ____fmtinput _db ""
  8. ____char______db ?
  9. data ends
  10. code segment public ________________; Начало сегмента кода
  11. ____assume _ds:data, cs:code
  12. ____include Handyfar.inc____________; Подключаем файл с функциями
  13. ____main proc ______________________; Начало процедуры main
  14. ________call____SetDataSegment______; Вызываем процедуру SetDataSegment
  15. ________lea_____ax, ds:[askUser]____; Загружаем адрес переменной askUser в регистр ds:ax
  16. ________call____WriteString_________; Вызываем процедуру WriteString(ax:askUser)
  17. ________lea_____ax, ds:[char]_______; Загружаем адрес переменной char в регистр ds:ax
  18. ________push____ax__________________; 2-й: Сохраняем значение регистра ax в стеке
  19. ________lea_____ax, ds:[fmtinput]___; 1-й: Загружаем адрес строки формата fmtinput в регистр ds:ax
  20. ________call____ScanFormatString____; Вызываем процедуру ScanFormatString(ax:fmtinput, char)
  21. ________add_____sp, 2_______________; Выравниваем стек
  22. ________mov_____al, char____________; Копируем значение переменной char в регистр al
  23. ________push____ax________________—_; 2-й: Сохраняем значение регистра ax в стеке
  24. ________lea_____ax, ds:[fmtoutput]__; 1-й: Загружаем адрес строки формата fmtoutput в регистр ds:ax
  25. ________call____PrintFormatString_—_; Вызываем процедуру PrintFormatString(ax:fmtoutput, char)
  26. ________add_____sp, 2_______________; Выравниваем стек
  27. ________xor_____al, al______________; Обнуляем регистр al
  28. ________call____ExitProcess_________; Вызываем процедуру ExitProcess
  29. ____main endp ______________________; Конец процедуры main
  30. code ends __________________________; Конец сегмента кода
  31. end main ___________________________; Конец файла. Точкой входа указывается процедура main

Пример использования функции ScanFormatString для ввода форматированной строки в которой присутствует спецификатор %s.
Made on
Tilda