Двигать заданное сообщение по экрану стрелками - 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
Объяснение кода листинга программы
- mov ah,02h - устанавливает код сегмента для регистра ah равным 02h (0x02), который используется для управления курсором
- mov dh,10 - устанавливает значение в регистре dh равным 10
- mov dl,20 - устанавливает значение в регистре dl равным 20
- int 10h - вызывает функцию BIOS, которая управляет курсором и перемещает его на экран Данный код переместит курсор на экран в позицию (10,20) от начала координат (обычно это верхний левый угол).