Заполнение окна одинаковыми символами - Assembler
Формулировка задачи:
Доброго времени суток, необходимо заполнить полученное окно одинаковыми символами, т.е вводимый с клавиатуры символ полностью должен заполнять это окно. Не подскажите, как можно изменить код, чтобы это осуществить?
;Программа очищает экран и вырезает в его центре инверсное окно разумных размеров. ;Вводимый с клавиатуры символ полностью заполняет это окно. При вводе следующего символа всё повторяется. model small stack 100h dataseg char db ? ;сам символ posx db 20 ;горизонтальная координата posy db 6 ;вертикальная координата codeseg startupcode ; очистка экрана call clear_scr ; ввод начального символа input: mov ah, 0 int 16h cmp al, 0 je input ; если символ не введён, то запрашиваем снова mov char, al ; главный цикл _loop: call char_out; выводим символ на экран mov ah, 0 ; считываем код нажатой клавиши int 16h cmp al, 0 ; если это символ mov char, al ; сохраняем его и проверяем условие выхода cmp ah, 43h jne _loop ; если это F9 jmp exit exit: call clear_scr mov ah, 4ch int 21h clear_scr proc near ; функция очистки экрана mov ax, 0600h mov bh, 07h mov cx, 0000h mov dx, 184fh int 10h clear_scr endp char_out proc near ; вывод текущего символа mov ah, 02h ; в указанной позиции mov bh, 0 mov dh, posy mov dl, posx int 10h mov ah,7 xor al,al mov bh,0f0h mov ch,6 mov cl,20 mov dh,12 mov dl,30 int 10h mov ah, 09h mov bh, 0 mov bl, 07h mov al, char mov cx, 1 int 10h ret char_out endp end
Решение задачи: «Заполнение окна одинаковыми символами»
textual
Листинг программы
char_out proc near ; вывод текущего символа mov ah, 0Ah mov bh, 0 mov al, char mov cx, 25*80 int 10h ret char_out endp
Объяснение кода листинга программы
В данном коде, который написан на языке Assembler, реализована процедура вывода текущего символа. Список действий, выполняемых в данной процедуре, следующий:
- mov ah, 0Ah - устанавливает код функции вывода в регистре AH на значение 0Ah (10), что означает вывод символа.
- mov bh, 0 - устанавливает код страницы в регистре BH на значение 0, что означает, что будет использоваться страница 0.
- mov al, char - копирует символ из памяти в регистр AL.
- *mov cx, 2580* - устанавливает счётчик циклов на 2580, что означает 2000 (2K) байтов, которые будут выводиться.
- int 10h - вызывает функцию вывода символа на экран.
- ret - завершает процедуру и возвращает управление обратно. Также стоит отметить, что в данном коде присутствует объявление процедуры с именем char_out и её реализация.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д