ХАНДЫФАР

Функция StringLength вычисляет длину строки, завершающейся (\0) или 0. Если указатель на строку равен 0, функция возвращает длину 0.

Параметры:

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

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

  • AX: Длина строки (количество символов до первого (\0) или 0).

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

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

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

  • Если указатель на строку равен 0, функция возвращает длину 0.
  • Функция не изменяет значения регистров, кроме AX.

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

Параметры:

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

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

  • AX: Длина строки (количество символов до первого (\0) или 0).

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

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

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

  • Если указатель на строку равен 0, функция возвращает длину 0.
  • Функция не изменяет значения регистров, кроме AX.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string db "Привет, Мир 8086 Ассемблера!\0"
  6. ____fmtstr 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____StringLength_______; Вызываем процедуру StringLength(ax:string) := AX
  15. ________push____ax_________________; 2-й: Сохраняем значение регистра ax в стеке
  16. ________lea_____ax, ds:[fmtstr]____; 1-й: Загружаем адрес строки формата fmtstr в регистр ds:ax
  17. ________call____PrintFormatString__; Вызываем процедуру PrintFormatString(ax:fmtstr, 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