0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 16
1

Заполнение окна одинаковыми символами

29.11.2016, 20:26. Показов 1093. Ответов 5
Метки нет (Все метки)

Доброго времени суток, необходимо заполнить полученное окно одинаковыми символами, т.е вводимый с клавиатуры символ полностью должен заполнять это окно. Не подскажите, как можно изменить код, чтобы это осуществить?

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
;Программа очищает экран и вырезает в его центре инверсное окно разумных размеров. 
;Вводимый с клавиатуры символ полностью заполняет это окно. При вводе следующего символа всё повторяется.
 
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
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2016, 20:26
Ответы с готовыми решениями:

Заполнение половины экрана символами
Добрый день, помогите решить задачу необходимо при нажатой правой кнопке заполнить верхнюю часть...

MASM, выделение памяти и заполнение ее символами
Приветствую, народ! Есть задачка простая, которую надо написать на ассемблере (masm) для ОС MS-DOS:...

Заполнение окна консоли символами
Как можно заполнить окно консоли каким либо символом не выходя за нижнюю границу. По горизонтали...

Регулярное выражение с одинаковыми символами
Друзья, помогите пожалуйста придумать регулярное выражение которые из строчки оставит выделенный...

5
Модератор
Эксперт по электронике
7653 / 3817 / 1483
Регистрация: 01.02.2015
Сообщений: 11,819
Записей в блоге: 2
29.11.2016, 21:27 2
Лучший ответ Сообщение было отмечено sovun как решение

Решение

Есле не путаю, то замените
Assembler
53
54
55
56
57
58
59
60
61
char_out proc near     ; вывод текущего символа
    mov ah, 0Ah
    mov bh, 0
    mov al, char
    mov cx, 25*80
    int 10h
    ret
 
char_out endp
0
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 16
29.11.2016, 21:35  [ТС] 3
Заменил, но результат, к сожалению, тот же. Появляется только один символ.
0
Модератор
Эксперт по электронике
7653 / 3817 / 1483
Регистрация: 01.02.2015
Сообщений: 11,819
Записей в блоге: 2
29.11.2016, 23:43 4
Приведите модифицированный исходник.
0
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 16
29.11.2016, 23:47  [ТС] 5
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
;Программа очищает экран и вырезает в его центре инверсное окно разумных размеров. 
;Вводимый с клавиатуры символ полностью заполняет это окно. При вводе следующего символа всё повторяется.
 
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, 0Ah
    mov bh, 0
    mov al, char
    mov cx, 25*80
    int 10h
    ret
 
char_out endp
 
end
0
6678 / 2661 / 366
Регистрация: 17.02.2013
Сообщений: 3,908
30.11.2016, 15:06 6
В конце подпрограммы clear_scr поставь ret
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2016, 15:06

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Рандомно заполнить двумерный массив одинаковыми символами
Всем привет. Начал изучение С++ на практике, первый язык програмирования, много каши в голове,...

Проверить слова, которые начинаются и заканчиваются одинаковыми символами
Имеется программа, которая на вводе строки, содержащей не более 40 символов(иначе происходит выход...

Найти количество строк, начинающихся и заканчивающихся одинаковыми символами
Дан текстовый файл, содержащий строки. Найти количество строк, начинающихся и заканчивающихся...

Переписать строки, которые начинаются и заканчиваются одинаковыми символами
ЗАДАНИЕ: сформироваТь коллекцию из N строк.Строки вводить с клавы.Перписать в другую коллекцию все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.