Перемещение строки сверху вниз - Assembler
Формулировка задачи:
Помогите, пожалуйста.
Нужно: задать вывод строки символов и ее перемещение сверху-вниз.
Решение задачи: «Перемещение строки сверху вниз»
textual
Листинг программы
- .286
- .model tiny
- .code
- org 100h
- start:
- mov ax,3
- int 10h ;устанавливаем текстовый видеорежим 80х25
- mov ah, 09h
- lea dx, Prompt
- int 21h
- mov ah, 0Ah
- lea dx, kbdBuffer
- int 21h
- mov al, len ;сохраняем длину строки в 2-хбайтовой переменной, чтобы было проще
- mov ah, 0 ;работать с духбайтными регистрами при вычислениях
- mov num, ax
- push 0B800h ; адрес видеобуфера
- pop es ;Производим вычисления для того, чтобы разместить ЛЮБУЮ рамку в цетре экрана.
- mov ax,09DBh
- mov cx,80*25 ;размер страницы видеопамяти
- mov di,0
- rep stosw ;красим экран в яркосиний цвет
- @@1:
- mov di, 80 ;вычисляем место для центрированной надписи
- sub di, num
- and di, 0FEh
- @b:
- mov si,offset mes ;в si адрес первой буквы слова
- mov cx, num ;заносим в сх длинну строки
- push cx
- ;копируем строку
- mov ah,9Fh ;аттрибуты символов
- @@2:
- lodsb
- stosw
- loop @@2
- ;задержка
- call delay
- ;забьем пробелами строку
- sub di, num
- sub di, num
- mov ax,09DBh ;цвет (атрибут) b символ фона
- pop cx
- rep stosw
- mov ah, 01h ;если нажата любая клавиша - завершить программу
- int 16h
- jnz @@Exit
- ;конец экрана?
- cmp di, 160*25
- jae @@1 ;если да, то переместимся на первую строку
- add di, 160 ;если нет, то на следующую строку
- sub di, num
- sub di, num
- jmp short @b
- @@Exit:
- mov ah, 00h ;считываем код нажатой клавиши, чтобы она не выводилась в командной строке
- int 16h
- int 20h ;завершаем программу
- kbdBuffer db 20
- len db 0
- mes db 20 dup(0)
- num dw 0
- Prompt db 'Input string: ', '$'
- DelayTime dd 500*1000
- Delay proc
- push ax
- push cx
- push dx
- mov ah, 86h
- mov al, 00h
- mov dx, word ptr DelayTime
- mov cx, word ptr DelayTime+2
- int 15h
- pop dx
- pop cx
- pop ax
- ret
- Delay endp
- end start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д