Передвижение курсора по экрану - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5
Похожие ответы