Передвижение курсора по экрану - Assembler
Формулировка задачи:
всем привет
в университете для получения зачета дали задание на разработку программы на ассемблере.
необходимо передвинуть курсор из позиции (24.24) в ту, которую введете с клавиатуры(в виде 2х значного числа) и интервалом 0.5 секунд. выход на esc
проблема в том, что на парах мы данного алгоритма или чего-то подобного не рассматривали, а в интернете очень мало нужной информации.
помогите пожалуйста.
Решение задачи: «Передвижение курсора по экрану»
textual
Листинг программы
.model small .stack 16h delay macro time local ext,iter push cx mov cx,time ext: push cx mov cx,5000 iter: loop iter pop cx loop ext pop cx endm .data msg label byte maxnum db 6 reallen db ? numfld db 5 dup(30h) mult10 db 1 ascval db 10 dup(30h),13,10,'$' db 256 dup ("?") x db ? y db ? txt1 db 13,10, 'Vvedite znachenie po vertikali y=$' txt2 db 13,10, 'vvedite znachenie po gorizontali x=$' .code start: mov ax, @data mov ds, ax xor dx, dx mov ah, 02h int 10h mov ah, 9 * lea dx, txt1 int 21h mov ah,0ah lea dx,msg int 21h call asbin mov ah, x mov y,ah mov ah, 9 * lea dx, txt2 int 21h mov ah,0ah lea dx,msg int 21h call asbin mov ah, x mov x,ah mov dh, 24d mov dl, 24d int 10h mov ah, 2h int 10h myLoop: mov cx, 2h mov ah, 7h int 21h cmp al, 1Bh ; выходить по ESC je EXIT cmp dl, x jg left jl right cmp dh, y jg down jl up loop myLoop ; UP: dec dh mov cx, 500 delay cx jmp moveIT DOWN: inc dh mov cx, 500 delay cx jmp moveIT LEFT: dec dl mov cx, 500 delay cx jmp moveIT RIGHT: inc dl mov cx, 500 delay cx jmp moveIT moveIT: mov ah, 2h int 10h loop myLoop EXIT: xor dx, dx mov ax, 4c00h int 21h asbin proc mov mult10,0001 mov x,0 mov ch,10 lea si,numfld-1 mov bl,reallen sub bh,bh b20: mov al,[si+bx] and ah,000fh mul mult10 add x,ah mov ah,mult10 mul ch mov mult10,ah dec bx jnz b20 ret asbin endp end start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д