Size: a a a

Ассемблер

2021 January 30

сс

скачать шансон с инт... in Ассемблер
Гитара красивая.
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
это не гитара
источник

сс

скачать шансон с инт... in Ассемблер
А, это укулеле.
источник

сс

скачать шансон с инт... in Ассемблер
Не разглядел.
источник

ЭR

Эрик Regent in Ассемблер
Супермегаукулеле)
источник

ЭR

Эрик Regent in Ассемблер
Струны только надо менять
источник

ЭR

Эрик Regent in Ассемблер
Это стоковая. Звенит слишком сильно и лады не очень ровно выставлены
источник

D

Den in Ассемблер
Saenro T
Раз уж ты изучаешь как расставить пиксели на экране в режиме int 10h, #3, чтобы они образовали окружность, то полагаю что вскоре ты захочешь раскрасить эти пиксели по своему усмотрению.
И тут тебе на помощь придут VGA порты: 3C8h, 3C9h.
В этом режиме, в ДОСБОКСЕ, одновременно можно отобразить всего 256 цветов из 262144 возможных. Но в чистом ДОСе и в этом видеорежиме одновременно можно замутить до 64000 уникальных цветов, но это уже прибегая к некоторым хитростям.
Итак, цвета программируются последовательно, а значения RGB лучше задавать заранее (подготовить палитру) в памяти и в нужный момент программировать их через порт 3C9, туда через этот порт можно отправить до 768 байт.
Порт 3C8h — индексный, т.е. в него ты записываешь адрес от 0 до 255, начиная с которого нужно начинать записывать байты через порт 3C9h.
Вся прелесть в том, что тебе не нужно заморачиваться с инкрементом индекса в 3C8h, как только ты запишешь значение в 3C9h, в 3C8h автоматически произойдёт инкремент индекса. Поэтому если ты укажешь начальный адрес — 0 (из 256 возможных), то можешь последовательно отправлять в порт 3C9 все 768 байт.
Каждый адрес принимает последовательно три байта (R,G,B).
768 байт — это 256×3 ячеек, т.е. 256 для R, 256 для G, 256 для B. И программируются , цвета поочерёдно: (R,G,B),(R,G,B),(R,G,B)...
Каждый цвет программируется тремя значениями RGB, каждое из этих значений лежит в диапазоне от 0 до 3Fh, отсюда и ограничения на количество цветов 64^3=262144.
А поскольку ячеек 768, то 768/3=256 цветов.
А вот пример программирования VGA через эти порты:
mov dx, 3C8h
xor al, al
out dx, al — будем шить с самого начала.
inc dx — 3C9h
mov cx, 300h — 768 байт
mov si, — адрес палитры из 768 байт
rep outsb — зашить последовательно все 768 байт
В итоге каждый цвет пикселя будет определяться значением от 0 до FFh.
Вот вчитываюсь, и родился вопрос, когда уже палитру залил значит в видеокарту, потом надо достать  цветную точку и нарисовать ее в видеопамять, вот типа такого механизм?
mov ax, 3c8h
in ax,10 ;сместиться на 16 индекс палитры
mov cx, 3 ; установим счетчик на 3 цикла считывания байтов
rgbread:
mov dl, 3c9h ;скопировать в dl адрес порта
out bl, dl; скопировать тек знач. в порте 3c9h (r,g или b цвета пикселя) в регистр bl (при этом в порте 3с8h должно что-то инкрементироваться, чтобы след. итерацией считался байт следующего из трех цветов)?
mov di, vid_mem_addr; установить di на адрес нужного пикселя на экране
mov [di], bl; записать один из трех байтов в область видеопамяти
inc byte di; увеличить на байт адрес di
loop rgbread
drawtoscreen:
..
а потом как то вывести видеопамять на экран, учитывая частоту развертки и обратный ход луча :)) или это уже должно быть на экране?
типа такого?
прошу не судить строго, это родил мозг человека без доступа к компьютеру и никогда ничего подобного не делавшего :))
источник

D

DRONE in Ассемблер
disba1ancer
какое нафиг умножение?
Прочитай что делает команда AND
источник

d

disba1ancer in Ассемблер
DRONE
Прочитай что делает команда AND
я и так знаю что она делает
источник

D

DRONE in Ассемблер
disba1ancer
я и так знаю что она делает
команда логического умножение
источник

D

DRONE in Ассемблер
почему ты вчера сказал что это не так ? когда я сравнил ее с умножением
источник

d

disba1ancer in Ассемблер
DRONE
почему ты вчера сказал что это не так ? когда я сравнил ее с умножением
потому что это побитовое И, а о логическом умножении я не слышал...
источник

D

DRONE in Ассемблер
не знаю мб у нас препод фиговый, но нам объяснили это как команда логического умножения и привели пример из булевого И :)
источник

D

DRONE in Ассемблер
может и есть какая-то взаимосвязь :С
источник

d

disba1ancer in Ассемблер
DRONE
не знаю мб у нас препод фиговый, но нам объяснили это как команда логического умножения и привели пример из булевого И :)
ну кто же его знает
источник

d

disba1ancer in Ассемблер
DRONE
не знаю мб у нас препод фиговый, но нам объяснили это как команда логического умножения и привели пример из булевого И :)
меня бы такая трактовка могла бы и запутать
источник

D

DRONE in Ассемблер
disba1ancer
меня бы такая трактовка могла бы и запутать
вот меня и запутала, вчера весь день голову проломал пытаясь понять что от меня хотят :С
источник
2021 January 31

ST

Saenro T in Ассемблер
Den
Вот вчитываюсь, и родился вопрос, когда уже палитру залил значит в видеокарту, потом надо достать  цветную точку и нарисовать ее в видеопамять, вот типа такого механизм?
mov ax, 3c8h
in ax,10 ;сместиться на 16 индекс палитры
mov cx, 3 ; установим счетчик на 3 цикла считывания байтов
rgbread:
mov dl, 3c9h ;скопировать в dl адрес порта
out bl, dl; скопировать тек знач. в порте 3c9h (r,g или b цвета пикселя) в регистр bl (при этом в порте 3с8h должно что-то инкрементироваться, чтобы след. итерацией считался байт следующего из трех цветов)?
mov di, vid_mem_addr; установить di на адрес нужного пикселя на экране
mov [di], bl; записать один из трех байтов в область видеопамяти
inc byte di; увеличить на байт адрес di
loop rgbread
drawtoscreen:
..
а потом как то вывести видеопамять на экран, учитывая частоту развертки и обратный ход луча :)) или это уже должно быть на экране?
типа такого?
прошу не судить строго, это родил мозг человека без доступа к компьютеру и никогда ничего подобного не делавшего :))
)))
Нет, так однозначно не сработает) Да и не нужно.
Всё гораздо проще:
Вот ты окружность рисовал? А не задумывался почему она уже нарисовалась каким-то цветом и без того, что ты описал выше? Хм... Видимо там уже прошиты какие-то цвета, не так ли? И ты каким-то из этих цветов уже рисуешь эту окружность?
В том коде, что рисует окружность, есть такая команда:
mov b,[bx][di], 64h
Что в исходнике выглядит так:
mov byte [di+bx], color
— именно эта команда выводит в адреса A000:0000-F9FF пиксель, цвет которого изначально был зашит производителем по смещению 64h. Почему выбрали 64h? Да потому что это более-менее яркий, нейтральный цвет похожий на белый. Все остальные цвета там бледные и мутные, так уж решил производитель по каким-то своим соображениям.
Если подитожить:
1. Зашил 256 цветов по индексам 0..255
2. Вывел пиксель mov [di], al — где al это твой цвет от 0 до 255. DI — адрес от 0 до F9FFh
Всё просто)
источник

DB

Dima Bat in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
как созреет - зайдет снова
да че с тобой случилось был же нормальный пацан
источник