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

Выводит на экран 4 прямоугольника разных цветов, при работе программы произвольно изменяются цвета

22.12.2011, 23:53. Показов 2079. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать программу, которая выводит на экран 4 прямоугольника разных цветов, при работе программы произвольно изменяются цвета на экране каждую секунду
Миниатюры
Выводит на экран 4 прямоугольника разных цветов, при работе программы произвольно изменяются цвета  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2011, 23:53
Ответы с готовыми решениями:

Програма выводит на экран 4 прямоугольника разных цветов
програма выводит на экран 4 прямоугольника разных цветов, при работе программы произвольно...

При работе в IDE SASM программа выводит текст, при самостоятельном пуске - экран пустой (NASM, Ubuntu)
Доброго времени суток! Совсем недавно стал писать на NASM под linux. Узнал что есть такая...

Есть н цветов разных видов. Составьте все возможные сочетания букетов из всех этих цветов. Количество цветов и их названия вводит пользователь
Есть n цветов разных видов. Составьте все возможные сочетания букетов из всех этих цветов....

При работе с вектором изменяются адреса элементов
Здравствуйте. В соответствии с правилами создаю новую тему, хотя вопрос имеет отношение к другой...

14
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
23.12.2011, 01:08 2
Такую?
Вложения
Тип файла: zip colorbox.zip (310 байт, 40 просмотров)
1
13 / 12 / 0
Регистрация: 22.12.2011
Сообщений: 16
23.12.2011, 06:47 3
Цитата Сообщение от kollega93 Посмотреть сообщение
Написать программу, которая выводит на экран 4 прямоугольника разных цветов, при работе программы произвольно изменяются цвета на экране каждую секунду
Кстати, под MS DOS или под виндовс нужна прога ? Если под ДОС, то какой графический режим нужен? А если под виндовс, то опять же под какую технологию ? (опен жл, директ икс, гдай32, гдай+)
0
Ушел с форума
Автор FAQ
16276 / 7601 / 1064
Регистрация: 11.11.2010
Сообщений: 13,616
23.12.2011, 08:37 4
Sasha_good, можно особо и не мучиться и писать сразу в текстовом 3 режиме, например так
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
; masm dos com #
.286
.model tiny
.code
org 100h
start:  mov ax,3
    int 10h
    mov ax,0B800h
    mov es,ax
a0: mov di,0
    mov al,0DBh
    mov cx,25
a1: push cx
    mov ah,color1
    mov cx,20
    rep stosw
    mov ah,color2
    mov cx,20
    rep stosw
    mov ah,color3
    mov cx,20
    rep stosw
    mov ah,color4
    mov cx,20
    rep stosw
    pop cx
    loop a1
        mov ah,0
        int 1Ah
    push bx
        mov bx,dx
        add bx,9
a2:     int 1Ah
        cmp bx,dx
        jnz a2
        inc color1
        inc color2
        inc color3
        inc color4
    mov ah,1
    int 16h
    jz a0
    retn
color1 db  1110b
color2 db  1001b
color3 db  1010b
color4 db  1100b
end start
Выход из программы при нажатии на любую клавишу
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
23.12.2011, 10:49 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
               org  100h
main:
        push    cs
        pop ds
        push    0B800h
        pop es
        mov cx, 25      ; lines
lines:          push    cx
                mov cx,4
                mov si,colors
onelin:     lodsw
        call    _seg_
        loop    onelin
        pop cx
        loop    lines       
 
                mov     ax, 351Ch                                     ; получить в ES:BX адрес прерывания 8h
            int     21h
            mov     word ptr old_int1C, bx     ; запомним старый адрес 08
            mov     word ptr old_int1C+2, es    ; прерывания
                mov     ax, 251Ch                                             ; установим вектор на 08
            mov     dx, _int1C        ; прерывание
            int     21h
            xor ah, ah
        int 16h
 
remove: 
            mov dx, word ptr old_int1C     ; возвращаем вектор прерывания
            mov ds, word ptr old_int1C+2    ; на место
            mov ax, 251Ch
                int 21h
exit:                                   ; выход
            int 20h
_seg_:      push    cx
        mov cx, 20
        rep stosw
        pop cx
        ret
 
_int1C:         pushf
        inc byte ptr cs:flag
        cmp byte ptr cs:flag,18 ; got 1 sec. signal?
        jz  @@1         ; yes, processing
@@0:        popf
        jmp dword ptr cs:old_int1C      ; go back
@@1:        mov byte ptr cs:flag, 0
        pusha
        push    es
        push    ds
        mov ax,0B800h
        mov ds,ax
        mov es,ax
        xor si,si
        xor di,di
        mov cx, 80*25
@@2:        lodsw
        inc ah
        and ah,0Fh
@@3:        stosw
        loop    @@2
        pop ds
        pop es
        popa
        jmp     @@0
old_int1C:  dd  ?
flag:       db  0
colors:     DW 0EDBh, 01DBh, 02DBh, 04DBh
1
Ушел с форума
Автор FAQ
16276 / 7601 / 1064
Регистрация: 11.11.2010
Сообщений: 13,616
23.12.2011, 10:53 6
Charles Kludge, у меня под WinXP, запущенная под Far Menager программа из colorbox.zip не заработала(в #5 ведь ее текст?)
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
23.12.2011, 11:00 7
Цитата Сообщение от Mikl___
не заработала(в #5 ведь ее текст?)
W2KSP4eng+FAR2.0#981 - без проблем. А текст уже не её - на 10. байт короче.
1
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 20
24.12.2011, 03:14  [ТС] 8
Цитата Сообщение от Charles Kludge Посмотреть сообщение
Такую?
А можешь код написать? Нужно очень.
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
24.12.2011, 03:25 9
kollega93, дык, выше. msg #5.
0
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 20
24.12.2011, 03:33  [ТС] 10
Цитата Сообщение от Charles Kludge Посмотреть сообщение
kollega93, дык, выше. msg #5.
я ввожу команду в cmd - tasm 1.asm 1.obj и выбивает ошибки!! а что писать в начале и в конце?
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
24.12.2011, 03:45 11
kollega93, там был FASM. Для TASMa - вотЪ:
Код
tasm /m3 colorbox && tlink /t /3 colorbox
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
    .model  tiny
    .code
               org  100h
main:
        push    cs
        pop ds
        push    0B800h
        pop es
        mov cx, 25      ; lines
lines:          push    cx
                mov cx,4
                mov si, offset colors
onelin:     lodsw
        call    _seg_
        loop    onelin
        pop cx
        loop    lines       
 
                mov     ax, 351Ch                                     ; получить в ES:BX адрес прерывания 8h
            int     21h
            mov     word ptr old_int1C, bx     ; запомним старый адрес 08
            mov     word ptr old_int1C+2, es    ; прерывания
                mov     ax, 251Ch                                             ; установим вектор на 08
            mov     dx, offset _int1C        ; прерывание
            int     21h
            xor ah, ah
        int 16h
 
remove: 
            mov dx, word ptr old_int1C     ; возвращаем вектор прерывания
            mov ds, word ptr old_int1C+2    ; на место
            mov ax, 251Ch
                int 21h
exit:                                   ; выход
            int 20h
_seg_:      push    cx
        mov cx, 20
        rep stosw
        pop cx
        ret
 
_int1C:         pushf
        inc byte ptr cs:flag
        cmp byte ptr cs:flag,18 ; got 1 sec. signal?
        jz  @@1         ; yes, processing
@@0:        popf
        jmp dword ptr cs:old_int1C      ; go back
@@1:        mov byte ptr cs:flag, 0
.386
        pusha
.286
        push    es
        push    ds
        mov ax,0B800h
        mov ds,ax
        mov es,ax
        xor si,si
        xor di,di
        mov cx, 80*25
@@2:        lodsw
        inc ah
        and ah,0Fh
@@3:        stosw
        loop    @@2
        pop ds
        pop es
.386
        popa
.286
        jmp     @@0
old_int1C:  dd  ?
flag:       db  0
colors:     DW 0EDBh, 01DBh, 02DBh, 04DBh
        end main
0
13 / 12 / 0
Регистрация: 22.12.2011
Сообщений: 16
24.12.2011, 04:33 12
Вот прога, которую написал Mikl___ у меня скомпилировалась в emu8086 и работает. Единственное что не раз в секунду а чаще меняются цвета (если это конечно имеет принципиальное значение). Прилагаю скомпилиный файл.
Вложения
Тип файла: rar 4color.rar (170 байт, 15 просмотров)
0
13 / 12 / 0
Регистрация: 22.12.2011
Сообщений: 16
24.12.2011, 04:37 13
А вот прога Charles Kludge не компилится из-за того что ругается на строку:
(31) wrong parameters: MOV ds, word ptr old_int1C+2
(31) cannot use segment register with an immediate value
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
24.12.2011, 16:06 14
Цитата Сообщение от Sasha_good
wrong parameters: MOV ds, word ptr old_int1C+2
Кхе... ТруппоАСМ - транслятор отличный(от других).
Такое он у вас кушать изволит?
Assembler
1
lds dx, dword ptr old_int1C
Кстати. версию ТАСМа озвучьте.
0
13 / 12 / 0
Регистрация: 22.12.2011
Сообщений: 16
27.12.2011, 00:06 15
Цитата Сообщение от Charles Kludge Посмотреть сообщение
Кхе... ТруппоАСМ - транслятор отличный(от других).
Такое он у вас кушать изволит?
Assembler
1
lds dx, dword ptr old_int1C
Кстати. версию ТАСМа озвучьте.
Не, это был не тасм, это был emu8086. Сорри если в данной ветке про emu8086 нельзя писать. Я конечно понимаю что он не совершенен, но он очень хорошо задуман, жаль не доделан. Была бы конфетка. Про тасм ничего не скажу так как не юзал. Люблю масм32 комплект.
0
27.12.2011, 00:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2011, 00:06
Помогаю со студенческими работами здесь

Почему изменяются поля элементов в очереди при работе с копией в массиве?
добрый вечер. стоит следующая задача: описать клас для хранения след информации, код кладельца,...


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

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

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