Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.03.2017
Сообщений: 3
1

Перемещение строки сверху вниз

20.03.2017, 08:54. Показов 2811. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста.
Нужно: задать вывод строки символов и ее перемещение сверху-вниз.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2017, 08:54
Ответы с готовыми решениями:

Перемещение точки вверх/вниз
Подскажите, пожалуйста, как исправить программу. Задача - нарисовать точку с возможностью ее...

Как все-таки заставить "ПРИВЕТ" двигаться сверху вниз?
Добрый вечер. Есть задачка, которую реализовать мне помог , за что ему спасибо. Задача звучит так: ...

Перемещение квадрата сверху вниз
помогите, нужна программа в которой квадрат будет перемещаться сверху вниз. паскальАБС

В Матрице A(N,M) расположить сверху-вниз строки
нужно в матрице A(N,M) расположить сверху-вниз строки в порядке убывания их максимальных элементов...

1
Модератор
Эксперт по электронике
8476 / 4335 / 1642
Регистрация: 01.02.2015
Сообщений: 13,461
Записей в блоге: 8
20.03.2017, 09:42 2
После лёгких изменений Как все-таки заставить "ПРИВЕТ" двигаться сверху вниз?
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
.286
.model tiny
.code
org 100h
start:
    mov ax,3
    int 10h            ;устанавливаем текстовый видеорежим 80х25
    push 0B800h        ; адрес видеобуфера
    pop es             ;Производим вычисления для того, чтобы разместить ЛЮБУЮ рамку в цетре экрана.
    mov ax,09DBh
    mov cx,80*25       ;размер страницы видеопамяти
    mov di,0
    rep stosw          ;красим экран в яркосиний цвет
 
@@1:
    mov di, 80-num     ;вычисляем место для центрированной надписи
@b:
    mov si,offset mes  ;в si адрес первой буквы слова
    mov cx, num        ;заносим в сх длинну строки
    push cx
    ;копируем строку
    mov ah,9Fh         ;аттрибуты символов
@@2:
    lodsb
    stosw
    loop @@2
    ;задержка
    call delay
    ;забьем пробелами строку
    sub di, num*2
    mov al, ' '
    mov ah, 0DBh ;цвет (атрибут) фона
    mov ax,09DBh
    pop cx
    rep stosw
 
    mov ah, 01h ;если нажата любая клавиша - завершить программу
    int 16h
    jnz @@Exit
 
    ;конец экрана?
    cmp di, 160*25
    jae @@1     ;если да, то переместимся на первую строку
    add di, 160-num*2   ;если нет, то на следующую строку
    jmp short @b
 
@@Exit:
    mov ah, 00h ;считываем код нажатой клавиши, чтобы она не выводилась в командной строке
    int 16h
 
    int 20h              ;завершаем программу
mes db "Privet"
num = $ - mes
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
Добавлено через 23 минуты
Забыл о вводе строки.
После исправления
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
82
83
84
85
86
87
88
89
90
91
92
.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
Добавлено через 1 минуту
Прошу прощения за чудовище Франкенштейна, но самостоятельно я бы делал и оформлял на пару часов дольше.
0
20.03.2017, 09:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.03.2017, 09:42
Помогаю со студенческими работами здесь

Сортировка двумерного массива. Строки сортируются слева направо, а столбцы сверху вниз
Требуется отсортировать двумерный массив по строкам и по столбцам. Размер массива NxN. Если можно,...

Перемещение строки вниз по условию
Добрый день. Помогите, пожалуйста, Через условное форматирование сделал если =$B$2:$B$100="Да"...

Проектирование сверху вниз
Хотел бы сразу предупредить. Отвечают только "бывалые", профессионалы, скажем так. Слышал это не...

Метод «Сверху вниз»
Здравствуйте. Возник вопрос, считается ли код ниже кодом, написанным по методу «Сверху вниз»? ...

Квадраты падают сверху вниз
Можете дать примеры как можно сделать , чтобы квадраты зарисовывались рандомно сверху экрана и...

Совместимость модулей сверху вниз
Остро необходимо запустить модуль написанный для 7 друпала на 6-ом. Я только начал знакомство с...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru