Двигать заданное сообщение по экрану стрелками - Assembler

Узнай цену своей работы

Формулировка задачи:

нужно создать программу, сначала выдающую в центре экрана сообщение "0123456789". Далее по нажатии клавиш направления(стрелок), сообщение должно двигать в соответственном направлении. Написал код, программа выводит сообщение по центру, но потом когда нажимаем клавишу, число не сдвигается, а каждый раз выводится в левом верхнем углу. помогите, пожалуйста, кто может
.MODEL small        ;определяем модель вычислений.
.STACK 100h     ;определяем сегмент стека и задаем его, задаем размер.
.DATA           ;определяем сегмент данных.
num db '0123456789$';         ;строковая переменная числа
 
.CODE           ;определяем сегмент кода.
mov ax, @data   ; инициализируем сегмент данных.
mov ds, ax      ;в DSзаносим адрес начала сегмента данных.

mov ah, 00h
mov al,1; задали размер окна
int 10h
 
mov ah,02h; задали позицию курсора
mov dh,10
mov dl,20
int 10h
 
mov dx,offset num; вывод числа
mov ah,09h
int 21h
 
b:
 
mov ah,7; вызов функции ввода с клавиатуры
int 21h; вызов прерывания
 
cmp al,4bh; сравниваем со стрелкой влево
je l
 
cmp al,4dh; сравниваем со стрелкой вправо
je r
 
cmp al,48h; сравниваем со стрелкой вверх
je u
 
cmp al,50h; сравниваем со стрелкой вниз
je d
 
l:
mov ah, 00h
MOV al,1
int 10h
mov ah,02h
dec dh; уменьшаем на 1
mov dx,offset num
mov ah,09h
int 21h
jmp b
 
r:
mov ah, 00h
MOV al,1
int 10h
mov ah,02h 
inc dh; увеличиваем на 1
mov dx,offset num
mov ah,09h
int 21h
jmp b
 
u:
mov ah, 00h
MOV al,1
int 10h
mov ah,02h 
inc dl; увеличиваем на 1
mov dx,offset num
mov ah,09h
int 21h
jmp b
 
d:
mov ah, 00h
MOV al,1
int 10h
mov ah,02h 
dec dl; уменьшаем на 1
mov dx,offset num
mov ah,09h
int 21h
jmp b

mov ah,4ch
int 21h
END

Решение задачи: «Двигать заданное сообщение по экрану стрелками»

textual
Листинг программы
mov ah,02h; задали позицию курсора
mov dh,10
mov dl,20
int 10h

Объяснение кода листинга программы

  1. mov ah,02h - устанавливает код сегмента для регистра ah равным 02h (0x02), который используется для управления курсором
  2. mov dh,10 - устанавливает значение в регистре dh равным 10
  3. mov dl,20 - устанавливает значение в регистре dl равным 20
  4. int 10h - вызывает функцию BIOS, которая управляет курсором и перемещает его на экран Данный код переместит курсор на экран в позицию (10,20) от начала координат (обычно это верхний левый угол).

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

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