Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.03.2019
Сообщений: 20

Организовать смену цвета пикселей при нажатии на пробел

09.12.2019, 14:33. Показов 2922. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Скиньте пожалуйста рабочий .asm с решением задания, если есть. Задача: Организовать смену цвета пикселей при нажатии клавиши пробел. Я и за год такое не напишу.
Всем добра и заранее спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.12.2019, 14:33
Ответы с готовыми решениями:

Какое свойство Button отвечает за смену цвета при нажатии?
Доброго времени суток. Подскажите какое свойство отвечает за смену цвета при нажатии ? Нужно чтобы цвет кнопки менялся только когда на нее...

При нажатии на клавишу пробел в центре формы появляется круг радиусом 10 пикселей
написать приложение :при нажатии на клавишу Пробел в центре формы появляется круг радиусом 10 пикс. Пользователь может управлять его...

Организовать ,что при нажатии Enter входит в меню , а при нажатии Esc выходит с программы
Вот кусочек курсовой , помогите организовать такую вещь как при нажатии Enter входит в меню , а при нажатии Esc выходит с программы.Если...

3
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
09.12.2019, 20:23
Цитата Сообщение от FastAR Посмотреть сообщение
смену цвета пикселей
укажи каких конкретно пикселей и требуемые цвета..
1
0 / 0 / 0
Регистрация: 26.03.2019
Сообщений: 20
09.12.2019, 23:12  [ТС]
В задании цвета не указаны. И какие пиксели изменять тоже, к сожалению, не указано.

Добавлено через 1 минуту
В задании цвета не указаны. И какие пиксели изменять тоже, к сожалению, не указано.
0
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
13.12.2019, 19:42
Лучший ответ Сообщение было отмечено FastAR как решение

Решение

Самым лёгким для программирования графики в DOS является видеорежим
13h (известный в Quick Basic как Screen 13) Это единственный 256 цветный
режим, который был у старых VGA (не Super) контроллеров.
В этом режиме картинка - гладкий массив точек в видеосегменте 0A000h,
чтобы записать точку с координатами x,y надо просто записать байт по адресу
0A000h:[320*y+x],причём размер видеопамяти составляет 320*200=64000 байт,
то есть укладывается в 1 сегмент памяти. Возможно, многие экспериментируя
с программированием графики замечали, что цвета точек какие-то не такие,
и не удаётся загрузить даже простую чёрно-белую фотографию. Эта проблема
решается программированием палитры. Каждому из 256 индексов цвета может быть задан
реальный цвет в кодировке R,G,B (как в файлах HTM), правда R,G,B в VGA
принимают значения не 0-255, а 0-63 (63 - максимальная яркость) Допустим, нам надо,
чтобы цвет 0 (который обычно чёрный) стал жёлтым. Мы пишем

Assembler
1
2
3
4
5
6
7
8
9
10
    mov dx,3C8h ; регистр индекса
    mov al,0  ; цвет №0
    out dx,al
    inc dx ; 3C9h - регистр данных палитры
        mov al,63 ; красный канал - 63
    out dx,al
        mov al,63 ; зелёный канал - 63
    out dx,al
        mov al,0  ; синий канал - 0
    out dx,al
Причём для программирования палитры целиком можно записывать
в регистр 3C9h сразу все байты палитры (запись в 3C8h делается только
для первого номера цвета) Для примера в моей программе я заменяю 16 цветов
цветной палитры на серую и обратно. Обратите внимание, что сама картинка
при этом не перерисовывается, а точки только меняют свой цвет.

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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
; Программа смены палитры VGA
; Настоятельно рекомендуется запускать из DosBox
; или Microsoft Virtual PC - Windows 98
    .model small
    .code
start:  jmp beg
; Картинка 32*32 точки 16 цветов
img db "77777777777750000000000000000000"
    db "77777777777500000000000000000000"
    db "77555777777096C88C69000000000000"
    db "5555557777068888888C600000000000"
    db "55555555709888888888890000000000"
    db "5555555000CA00688600AC0000000000"
    db "555555000060AAAAAAAA060000000000"
    db "5555555AA09AD8A66A8DA90AA0000000"
    db "55777709609AE0A88A0EA90690000000"
    db "7777770840698E9889E8960480000000"
    db "7777770660C6999889996C0660000000"
    db "7777777086888C9889C8886800000000"
    db "7777777709888C6886C8889000000000"
    db "77777777706860000006C60000000000"
    db "7777777770A8000000006A0000000000"
    db "77777770000A00000000A00000000000"
    db "77777001D0A222A99A222A0D10000000"
    db "777001DD0AD2224224222DA0DD100000"
    db "7709DF10AD822242242228DA01FD9000"
    db "706C910B8EE2224224222EE8B019C600"
    db "09CCC0A8EEE222D888222EEE8A0CCC90"
    db "06C090B8EEE8DBEA0EBD8EEE8B090C60"
    db "096A00A8EEEEEBEEEEBEEEEE8A00A690"
    db "7096070B8EEEEAEEEEAEEEE8B0006900"
    db "77007770AB8EEAEEEEAEE8BA00000000"
    db "77777777000000000000000000000000"
    db "77777770422400000000422400000000"
    db "77777704222240000004222240000000"
    db "7777770222E2207777022E2220000000"
    db "77777702222220777702222220000000"
    db "7777770ABDED30777703DEDBA0000000"
    db "77777777777777777777777750000000"
 
; Цветная палитра картинки 16 цветов
 
colorpal db  1, 0, 3
    db  19, 34, 51
    db  53, 0, 1
    db  13, 12, 13
    db  23, 5, 1
    db  1, 0, 21
    db  52, 37, 22
    db  1, 1, 31
    db  59, 51, 41
    db  40, 24, 10
    db  26, 16, 12
    db  33, 32, 29
    db  57, 45, 31
    db  37, 41, 44
    db  61, 60, 61
    db  7, 21, 41
 
; место для серой палитры (16*3)
 
graypal db 48 dup(0)
 
; получить серую палитру из цветной
makegray:mov di,offset graypal
        mov si,offset colorpal
        mov cx,16 ; 16 цветов
mg1:    mov ax,0 ; gray=(r+g+b)/3
        add al,[si]
        inc si
        add al,[si]
        inc si
        add al,[si]
        inc si
        mov bl,3
    div bl
        stosb ; сохранить gray палитру
        stosb
        stosb
    loop mg1
        ret        
 
; установить палитру VGA
; SI - таблица палитры
setpal: mov dx,3c8h ; регистр индекса палитры
    mov al,0
    out dx,al
    mov cx,16 ; 16 цветов
        inc dx ; dx=регистр данных палитры
set1:   lodsb  ; загрузить r,g,b
        out dx,al
    lodsb
        out dx,al
    lodsb
        out dx,al
        loop set1
        ret
 
 
beg:    push cs
        pop  ds
    push cs
    pop  es
    call makegray ; создать серую палитру
    mov ax,0013h  ; установить режим VGA 13h (320*200 256 цветов)
    int 10h
    mov ax,0A000h ; es=видеосегмент
    mov es,ax
 
    mov si,offset graypal ; установить палитру
        call setpal
 
    mov si,offset img
        mov di,320*(100-16)+(160-16) ; адрес верхнего левого угла картинки
    mov cx,32 ; картинка 32*32 точки
nextline:push cx
        push di
    mov cx,32
nextdot:lodsb
    cmp al,"A"
    jc  m1
    sub al,7
m1:     sub al,"0"
        stosb ; запись точки в видео ОЗУ
    loop nextdot
    pop di
        add di,320   ; следующая строка картинки (320 - ширина экрана)
        pop  cx
    loop nextline
wt: mov si,offset colorpal ; установить цветную палитру
        call setpal
    mov ah,0 ; ожидать клавишу
    int 16h
    cmp al,32 ; если это не пробел, то выход
    jnz exit
 
    mov si,offset graypal ; аналогично для серой палитры
        call setpal
    mov ah,0 ; ожидать клавишу
    int 16h
    cmp al,32  ; если это не пробел, то выход
    jnz exit
    jmp wt
 
exit:   mov ax,3 ; установить текстовый режим (80*25)
    int 10h
    mov ax,4C00h ; выход в DOS
    int 21h
        end start
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.12.2019, 19:42
Помогаю со студенческими работами здесь

Действие при нажатии кнопки на смену представления
Подскажите как при нажатии на кнопку поменять представление (вид отображения) с одного на другое Контролер public function...

Викторина. Реализовать смену вопроса при нажатии на кнопку
Привет делаю лабу, надо сделать викторину. я начал писать код, вот код using System; using System.Collections.Generic; using...

Как сделать смену содержимого блока при нажатии на див
Нужно сделать так что бы при нажатии на панель высвечивалось описание пакета и при том событие onclick не действовала на кнопку заказать ...

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

Пауза в плеере при нажатии на пробел
Помогите сделать так чтобы при нажатии пробел в плеере работала пауза то ни как не могу придумать как это сделать(((


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru