Установить курсор в определенное по заданым координатам - Assembler
Формулировка задачи:
run macro i,j MOV AH,02h MOV DH, i MOV DL, j INT 10h ENDM ORG 100h run 15,15 MOV AH,0Eh Mov al,'t' int 10h RET
Решение задачи: «Установить курсор в определенное по заданым координатам»
textual
Листинг программы
; welcome.asm ; ; tasm /ml /m2 welcome ; tlink welcome ; IDEAL MODEL small STACK 256 DATASEG ; Сегмент данных. exCode db 0 welcome db 'Di3 Bitch...',10,13,'$' CODESEG ; Сегмент кода. ;* Подпрограмма, устанавливает координаты курсора. proc ScGotoXY push ax mov ah, 15 int 10h mov ah, 2 int 10h pop ax ret endp ScGotoXY ;*** _Точка входа. *** Start: mov ax, @data mov ds, ax mov dh, 10 ; Y mov dl, 30 ; X call ScGotoXY mov dx, offset welcome mov ah, 9 int 21h ;* Ожидание нажатие любой клавиши... mov ax, 0 int 16h mov ah, 04Ch mov al, [exCode] int 21h END Start
Объяснение кода листинга программы
- Кодирование на языке Assembler: Скрипт написан на языке Assembler.
- Установка координат курсора:
Процедура
ScGotoXY
устанавливает координаты курсора. Код выполняет следующие действия:- push ax: В стеке хранится текущее значение регистра ax.
- mov ah, 15: Регулярное выражение 15h перенаправляет вызов функции BIOS в графический режим.
- int 10h: Вызов функции BIOS для установки курсора.
- mov ah, 2: Регулярное выражение 2 перенаправляет вызов функции BIOS в графический режим.
- int 10h: Вызов функции BIOS для установки курсора.
- pop ax: Из стека извлекается сохраненное значение регистра ax.
- ret: Код возвращает управление в вызывающую программу.
- Точка входа:
Процедура
Start
является точкой входа в скрипт. Код выполняет следующие действия:- mov ax, @data: Регистр ax получает сегмент данных.
- mov ds, ax: Сегмент данных копируется в регистр ds.
- mov dh, 10: Регистр dh получает значение 10, что устанавливает Y-координату курсора.
- mov dl, 30: Регистр dl получает значение 30, что устанавливает X-координату курсора.
- call ScGotoXY: Вызывается процедура
ScGotoXY
для установки координат курсора. - mov dx, offset welcome: Регистр dx получает смещение строки
Di3 Bitch...
. - mov ah, 9: Регулярное выражение 9 перенаправляет вызов функции BIOS в графический режим.
- int 21h: Вызов функции BIOS для вывода строки на экран.
- mov ah, 04Ch: Регулярное выражение 04Ch перенаправляет вызов функции BIOS для чтения с клавиатуры.
- mov al, [exCode]: В регистр al записывается значение переменной
exCode
. - int 21h: Вызов функции BIOS для чтения с клавиатуры.
- Ожидание нажатия любой клавиши:
Процедура ожидает, пока пользователь не нажмет любую клавишу. Код выполняет следующие действия:
- mov ax, 0: Регистр ax получает значение 0.
- int 16h: Вызов функции BIOS для ожидания нажатия клавиши.
- Вывод сообщения:
После ожидания нажатия клавиши выводится сообщение
Di3 Bitch...
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д