Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
IriMr
0 / 0 / 0
Регистрация: 20.03.2017
Сообщений: 3
1

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

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

Помогите, пожалуйста.
Нужно: задать вывод строки символов и ее перемещение сверху-вниз.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2017, 08:54
Ответы с готовыми решениями:

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

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

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

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

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

1
ФедосеевПавел
Модератор
4310 / 2385 / 954
Регистрация: 01.02.2015
Сообщений: 7,852
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2017, 09:42

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

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

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


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

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

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