ХАНДЫФАР

Функция GetCursorPosition извлекает текущую позицию каретки (курсора) на экране текстового режима.

Параметры:

  • Функция не принимает параметров.

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

  • AH: Номер ряда (строка), начиная с 0.
  • AL: Номер колонки (столбец), начиная с 0.

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string db "Привет, Мир Ассемблера!\0"
  6. data ends
  7. code segment public
  8. ____assume _ds:data, cs:code
  9. ____include Handyfar.inc
  10. ____main proc
  11. ________call____SetDataSegment
  12. ________mov_____ax, 0606h
  13. ________call____SetCursorPosition
  14. ________lea_____ax, ds:[string]
  15. ________call____WriteString
  16. ________call____GetCursorPosition
  17. ________add_____ah, 6
  18. ________add_____al, 6
  19. ________call____SetCursorPosition
  20. ________lea_____ax, ds:[string]
  21. ________call____WriteString
  22. ________xor_____al, al
  23. ________call____ExitProcess
  24. ____main endp
  25. code ends
  26. end main
Функция GetCursorPosition извлекает текущую позицию каретки (курсора) на экране текстового режима.

Параметры:

  • Функция не принимает параметров.

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

  • AH: Номер ряда (строка), начиная с 0.
  • AL: Номер колонки (столбец), начиная с 0.

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

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

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

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

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string db "Привет, Мир Ассемблера!\0"
  6. data ends
  7. code segment public _______________; Начало сегмента кода
  8. ____assume _ds:data, cs:code
  9. ____include Handyfar.inc___________; Подключаем файл с функциями
  10. ____main proc _____________________; Начало процедуры main
  11. ________call____SetDataSegment_____; Вызываем процедуру SetDataSegment
  12. ________mov_____ax, 0606h__________; Копируем новую позицию курсора в регистр ax
  13. ________call____SetCursorPosition__; Вызываем процедуру SetCursorPosition(ah:06, al:06)
  14. ________lea_____ax, ds:[string]____; Загружаем адрес переменной string в регистр ds:ax
  15. ________call____WriteString________; Вызываем процедуру WriteString(ax:string)
  16. ________call____GetCursorPosition__; Вызываем процедуру GetCursorPosition() := AX
  17. ________add_____ah, 6______________; Прибавляем к ряду 6
  18. ________add_____al, 6______________; Прибавляем к колонке 6
  19. ________call____SetCursorPosition__; Вызываем процедуру SetCursorPosition(ah:12, al:12)
  20. ________lea_____ax, ds:[string]____; Загружаем адрес переменной string в регистр ds:ax
  21. ________call____WriteString________; Вызываем процедуру WriteString(ax:string)
  22. ________xor_____al, al_____________; Обнуляем регистр al
  23. ________call____ExitProcess________; Вызываем процедуру ExitProcess
  24. ____main endp _____________________; Конец процедуры main
  25. code ends _________________________; Конец сегмента кода
  26. end main __________________________; Конец файла. Точкой входа указывается процедура main
Made on
Tilda