ХАНДЫФАР

Функция StringCopy копирует содержимое строки, завершающейся (\0) или 0, в подготовленный буфер.

Параметры:

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

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

  • Функция не возвращает значение.

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string db "Привет, Мир 8086 ______________Ассемблера!\0"
  6. ____buffer db ($-string) - 1 dup(0)
  7. ____fmtout db "Скопированная строка: ______________%s\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_____bx, es:[buffer]
  15. ________lea_____ax, ds:[string]
  16. ________call____StringCopy
  17. ________lea_____ax, ds:[buffer]
  18. ________push____ax
  19. ________lea_____ax, ds:[fmtout]
  20. ________call____PrintFormatString
  21. ________add_____sp, 2
  22. ________xor_____al, al
  23. ________call____ExitProcess
  24. ____main endp
  25. code ends
  26. end main
Функция StringCopy копирует содержимое строки, завершающейся (\0) или 0, в подготовленный буфер.

Параметры:

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

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

  • Функция не возвращает значение.

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

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

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

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

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