Демки для DOS

Всё, что касается программирования на старых языках или для старых систем

Демки для DOS

Сообщение StoYazykov » 25 авг 2026, 13:31

Демки для DOS'а на ассемблере.
Что такое демка - это программа, которая делает максимально красивую и богатую картинку (или что-то иное), и при этом, очень мало весит.

Альтернативная страница: http://pmmx166.byethost8.com/?page=intro




Muching Squares (60 байт)

Изображение
Демка даёт красивое движущееся изображение, что-то вроде мозаики.

Изображение



Blink (16 байт)

Демка просто мерцает всеми 256-ю цветами. Прикол в том, что она умещается в 16 байт.
Изображение

Изображение



Snow (52/54 байт)

Демка показывает падающий снег. По умолчанию (снег белый) она весит 54 байта. Если же закомментировать инструкцию mov al, 0Fh, то снег будет цветным и демка будет весить соответственно 52 байта.
Изображение

Изображение


Ocean (56 байт)
Эта демка при работе даёт тёмно-синий и чёрный "шум" на экране. Если издали посмотреть, можно заметить как будто плавающий "планктон" в тёмно-синей воде.
Размер её в скомпилированном виде - всего 56 байт (за счёт самомодификации).

Первая моя работа в демосцене...

Изображение

Изображение
Последний раз редактировалось StoYazykov 30 авг 2026, 14:28, всего редактировалось 5 раз(а).
Самое тёмное дело - это строки в C

Объектно-ориентированное программирование -- метод изготовления граблей по принципу матрешки.

http://revival.narod.ws

Изображение
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 305
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

Демка - подводный мир

Сообщение StoYazykov » 25 авг 2026, 13:33

Эта демка при работе даёт тёмно-синий и чёрный "шум" на экране. Если издали посмотреть, можно заметить как будто плавающий "планктон" в тёмно-синей воде.
Размер её в скомпилированном виде - всего 56 байт (за счёт самомодификации)!
Демка работает из-под DOS'а.
ПРЕДУПРЕЖДЕНИЕ! Выйти из демки невозможно - для добавления возможности выхода, потребовалось бы побольше байт.

Код: Выделить всё
org 100h
mov al, 13h
int 10h
push 0A000h
pop es
a:
mov ax, 0A89Eh
rol ax, 1
add ax, 0ABCDh
mov [a+1], ax
xor dx, dx
mov cx, 141h
div cx
mov di, dx
mov ax, [a+1]
shr ax, 1
xor dx, dx
mov bx, 00C8h
div bx
xchg ax, dx
mov bx, 140h
mul bx
add di, ax
in al, 40h
shr al, 7
stosb
jmp a
Последний раз редактировалось StoYazykov 25 авг 2026, 16:36, всего редактировалось 1 раз.
Самое тёмное дело - это строки в C

Объектно-ориентированное программирование -- метод изготовления граблей по принципу матрешки.

http://revival.narod.ws

Изображение
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 305
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

Re: Демки для DOS

Сообщение iAPX286 » 25 авг 2026, 15:50

Аватара пользователя
iAPX286
Опытный даунгрейдер
 
Сообщения: 43
Зарегистрирован: 09 фев 2026, 01:59

Падал белый (или разноцветный) снег...

Сообщение StoYazykov » 26 авг 2026, 07:18

Демка - падающий снег.
Занимает 54 байта, если закомментировать инструкцию mov al, 0Fh - снег будет разноцветным, но зато будет весить уже 52 байта! :lol:
Работает очень просто - на первой строке рисуются белые точки по псевдослучайному X, потом вся видеопамять сдвигается на 320 байт, и верхняя строка затирается (чтобы были не струи, а снег).

Код: Выделить всё
org 100h
mov al, 13h
int 10h
mov    ax,    0A000h
mov    ds,    ax
mov    es,    ax
cycle:
in    al,   40h
rol    ax,    04h
xor    dx,   dx
mov   bx,    141h
div    bx
mov    bx,    dx
mov    al,    0Fh ; если эту инструкцию закомментировать,
; снег будет разноцветным, и сэкономится 2 байта :)
mov    [es:bx],al
mov    si,    0F8BFh
mov    di,    0F9FFh
mov    cx,    0F8C0h
std
rep    movsb
cld
xor    di,    di
xor    al,    al
mov    cx,    320
rep    stosb
jmp    cycle
Самое тёмное дело - это строки в C

Объектно-ориентированное программирование -- метод изготовления граблей по принципу матрешки.

http://revival.narod.ws

Изображение
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 305
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

Blink - мерцание

Сообщение StoYazykov » 26 авг 2026, 16:21

Просто мерцание экрана всеми 256 цветами. Занимает ровно 16 байт :lol: и так же не имеет возможности выйти.
Код: Выделить всё
org 100h
mov al, 13h
int 10h
push 0A000h
pop es
a:
mov ch, 0FAh
inc al
rep stosb
jmp a
Самое тёмное дело - это строки в C

Объектно-ориентированное программирование -- метод изготовления граблей по принципу матрешки.

http://revival.narod.ws

Изображение
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 305
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

Re: Демки для DOS

Сообщение iAPX286 » 27 авг 2026, 01:58

Попробовал написать munching squares в 13h режиме, примерно наполовину понимая, что делаю :mrgreen:
Я почти ничего на асме не писал, поэтому пришлось много искать инфу в интернете в процессе.
Долго не мог понять, почему у меня весь экран не зарисовывается, как ни позорно пришлось спросить LLM что не так в том месте (я запускал в обычном DOSBox, там нет дебаггера никакого типа регистры посмотреть), оказалось что DX, который я использовал для Y координаты, MUL изменяет...
Ассемблится NASM. Надо будет потом попробовать палитру зациклить или еще что :D
Код: Выделить всё
cpu 8086

org 100h

mov ax, 0013h
int 10h

mov ax, 0A000h
mov es, ax

mov cx, 0

draw_y:

mov bx, 0

draw_x:

mov ax, cx
mov si, 320
mul si
add ax, bx
mov di, ax

mov ax, bx
xor ax, cx
mov [es:di], ax

inc bx
cmp bx, 320
jl draw_x

inc cx
cmp cx, 200
jl draw_y

main_loop:

mov ah, 01h
int 16h
jz main_loop

mov ax, 0003h
int 10h

int 20h
Последний раз редактировалось iAPX286 27 авг 2026, 02:06, всего редактировалось 2 раз(а).
Аватара пользователя
iAPX286
Опытный даунгрейдер
 
Сообщения: 43
Зарегистрирован: 09 фев 2026, 01:59

Демка - Munching Squares

Сообщение StoYazykov » 27 авг 2026, 09:28

squares.zip
(6.39 Кб) Скачиваний: 321172

Движущаяся версия.
(как по мне - or ax, cx красивее, чем xor).

Добавил на Pouet: https://www.pouet.net/prod.php?which=106906
P. S. Если после xor сделать ещё sub - движение будет по горизонтали, слева направо.

Режим XOR:
Изображение
Режим XOR+SUB:
Изображение
Код: Выделить всё
org    100h
mov    al,    13h ; short analog of mov ax, 0013h, ah=00h
int    10h        ; set video mode
push    0A000h      ; set video segment (A000h)
pop    es
; drawing squares...
DrawY:          ; vertical
xor    bx,    bx
mov    di,    si
DrawX:          ; horizontal
mov    ax,    bx
xor    ax,    cx  ; XOR MODE
;sub    ax,    cx  ; uncomment for horizontal animation
stosb          ; write pixel
inc    bx       ; increment X counter
cmp    bx,    320 ; check of line end
jl    DrawX       ; if BX<320, continue drawing next pixel

add    si,    320 ; next line
inc    cl       ; short analog of inc cx
cmp    cl,    200 ; check of screen end
jb    DrawY       ; if CL<200, drawing next line

; animation.

Anim:
mov    dx,    3C8h ; change color
mov    al,    00h  ; color 0
out    dx,    al   ; change
inc    dx         ; dx=3C9h, change RGB (0-64)
mov    ch,    1    ; short analog of mov cx, 01??h, in CL garbage,
           ; but whatever - CL (color index) anyway in 0-FF :)
AnimLoop:
mov    al,    cl
add   ax,    bp   ; phase
out    dx,    al   ; select R
shr    al,    1    ; right-shift R value
out    dx,    al   ; select G
shr    ax,    1    ; right-shift G value
out    dx,    al   ; select B
loop    AnimLoop
inc    bp        ; increment phase
jmp    Anim
Последний раз редактировалось StoYazykov 06 сен 2026, 11:39, всего редактировалось 9 раз(а).
Самое тёмное дело - это строки в C

Объектно-ориентированное программирование -- метод изготовления граблей по принципу матрешки.

http://revival.narod.ws

Изображение
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 305
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

Re: Демки для DOS

Сообщение iAPX286 » 27 авг 2026, 16:50

StoYazykov писал(а):Движущаяся версия.

Прикольно :) С автоматическими циклами в DOSBox работает намного быстрее, чем демки со снегом/шумом/мерцанием цветами, пришлось уменьшать циклы :)

StoYazykov писал(а):(как по мне - or ax, cx красивее, чем xor).

Еще AND можно :)
Аватара пользователя
iAPX286
Опытный даунгрейдер
 
Сообщения: 43
Зарегистрирован: 09 фев 2026, 01:59

Re: Демки для DOS

Сообщение StoYazykov » 06 сен 2026, 14:45

Версия, не требующая замедления циклов DOSBox (ибо ждёт VSync), но - чтобы уместить её в 64 байта (весит она 63 байта), пришлось убрать один shr al, 1, из-за чего цвета стали золотыми, серебряными и синими.
Небольшое изменение даёт движущиеся изогнутые волны.

Изображение

 Развернуть: Квадраты
Код: Выделить всё
org    100h
mov    al,    13h ; short analog of mov ax, 0013h, ah=00h
int    10h        ; set video mode
push    0A000h      ; set video segment (A000h)
pop    es

; drawing squares...
DrawY:          ; vertical
xor    bx,    bx
mov    di,    si
DrawX:          ; horizontal
mov    ax,    bx
xor   ax,    cx
stosb          ; write pixel
inc    bx       ; increment X counter
cmp    bx,    320 ; check of line end
jl    short   DrawX       ; if BX<320, continue drawing next pixel

add    si,    140h ; next line
inc    cl       ; short analog of inc cx
cmp    cl,    200 ; check of screen end
jb    short   DrawY       ; if CL<200, drawing next line

; animation.

Anim:
mov     dx,    3DAh
Backtrace: 
in      al,    dx
and     al,    8
jz      short   Backtrace

mov    dl,    0C8h  ; change color
out    dx,    al   ; change
inc    dx         ; dx=3C9h, change RGB (0-64)
mov   ch,   1    ; short analog of mov cx, 01??h, in CL garbage,
           ; but whatever - CL (color index) anyway in 0-FF :)
AnimLoop:
mov    al,    cl
add    ax,    bp   ; phase
out    dx,    al   ; select R
out    dx,    al   ; select G
shr    ax,    1    ; right-shift G value
out    dx,    al   ; select B
loop   short  AnimLoop
inc    bp        ; increment phase
jmp    short  Anim


 Развернуть: Волны
Код: Выделить всё
org    100h
mov    al,    13h ; short analog of mov ax, 0013h, ah=00h
int    10h        ; set video mode
push    0A000h      ; set video segment (A000h)
pop    es

; drawing...
DrawY:          ; vertical
xor    bx,    bx
mov    di,    si
DrawX:          ; horizontal
mov    ax,    bx
mul   cx
stosw          ; write pixel
inc    bx       ; increment X counter
cmp    bx,    320 ; check of line end
jl    short   DrawX       ; if BX<320, continue drawing next pixel

add    si,    140h ; next line
inc    cl       ; short analog of inc cx
cmp    cl,    200 ; check of screen end
jb    short   DrawY       ; if CL<200, drawing next line

; animation.

Anim:
mov     dx,    3DAh
Backtrace: 
in      al,    dx
and     al,    8
jz      short   Backtrace

mov    dl,    0C8h  ; change color
out    dx,    al   ; change
inc    dx         ; dx=3C9h, change RGB (0-64)
mov   ch,   1    ; short analog of mov cx, 01??h, in CL garbage,
           ; but whatever - CL (color index) anyway in 0-FF :)
AnimLoop:
mov    al,    cl
add    ax,    bp   ; phase
out    dx,    al   ; select R
out    dx,    al   ; select G
shr    ax,    1    ; right-shift G value
out    dx,    al   ; select B
loop   short  AnimLoop
inc    bp        ; increment phase
jmp    short  Anim
Последний раз редактировалось StoYazykov 06 сен 2026, 15:11, всего редактировалось 3 раз(а).
Самое тёмное дело - это строки в C

Объектно-ориентированное программирование -- метод изготовления граблей по принципу матрешки.

http://revival.narod.ws

Изображение
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 305
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

Re: Демки для DOS

Сообщение inc1001 » 08 сен 2026, 13:20

StoYazykov писал(а):Версия, не требующая замедления циклов DOSBox (ибо ждёт VSync), но - чтобы уместить её в 64 байта (весит она 63 байта), пришлось убрать один shr al, 1, из-за чего цвета стали золотыми, серебряными и синими.
Небольшое изменение даёт движущиеся изогнутые волны.

 Развернуть: Квадраты
Код: Выделить всё
org    100h
mov    al,    13h ; short analog of mov ax, 0013h, ah=00h
int    10h        ; set video mode
push    0A000h      ; set video segment (A000h)
pop    es

; drawing squares...
DrawY:          ; vertical
xor    bx,    bx
mov    di,    si
DrawX:          ; horizontal
mov    ax,    bx
xor   ax,    cx
stosb          ; write pixel
inc    bx       ; increment X counter
cmp    bx,    320 ; check of line end
jl    short   DrawX       ; if BX<320, continue drawing next pixel

add    si,    140h ; next line
inc    cl       ; short analog of inc cx
cmp    cl,    200 ; check of screen end
jb    short   DrawY       ; if CL<200, drawing next line

; animation.

Anim:
mov     dx,    3DAh
Backtrace: 
in      al,    dx
and     al,    8
jz      short   Backtrace

mov    dl,    0C8h  ; change color
out    dx,    al   ; change
inc    dx         ; dx=3C9h, change RGB (0-64)
mov   ch,   1    ; short analog of mov cx, 01??h, in CL garbage,
           ; but whatever - CL (color index) anyway in 0-FF :)
AnimLoop:
mov    al,    cl
add    ax,    bp   ; phase
out    dx,    al   ; select R
out    dx,    al   ; select G
shr    ax,    1    ; right-shift G value
out    dx,    al   ; select B
loop   short  AnimLoop
inc    bp        ; increment phase
jmp    short  Anim


 Развернуть: Волны
Код: Выделить всё
org    100h
mov    al,    13h ; short analog of mov ax, 0013h, ah=00h
int    10h        ; set video mode
push    0A000h      ; set video segment (A000h)
pop    es

; drawing...
DrawY:          ; vertical
xor    bx,    bx
mov    di,    si
DrawX:          ; horizontal
mov    ax,    bx
mul   cx
stosw          ; write pixel
inc    bx       ; increment X counter
cmp    bx,    320 ; check of line end
jl    short   DrawX       ; if BX<320, continue drawing next pixel

add    si,    140h ; next line
inc    cl       ; short analog of inc cx
cmp    cl,    200 ; check of screen end
jb    short   DrawY       ; if CL<200, drawing next line

; animation.

Anim:
mov     dx,    3DAh
Backtrace: 
in      al,    dx
and     al,    8
jz      short   Backtrace

mov    dl,    0C8h  ; change color
out    dx,    al   ; change
inc    dx         ; dx=3C9h, change RGB (0-64)
mov   ch,   1    ; short analog of mov cx, 01??h, in CL garbage,
           ; but whatever - CL (color index) anyway in 0-FF :)
AnimLoop:
mov    al,    cl
add    ax,    bp   ; phase
out    dx,    al   ; select R
out    dx,    al   ; select G
shr    ax,    1    ; right-shift G value
out    dx,    al   ; select B
loop   short  AnimLoop
inc    bp        ; increment phase
jmp    short  Anim

Выглядит красиво. А откуда разрыв изогнутых волн в правой части экрана? :)
Запустил на компе Pentium M 600 МГц и в режиме эмуляции 80286 12 МГц (досбокса нет), скорость анимации в 4-5 раз выше, чем на скриншоте. Наверное, зависит от видеоадаптера. И еще выход при нажатии клавиши (как в примере iAPX286) был бы очень полезен.
 Развернуть: Пара нюансов
В начале кода предполагается, что регистр AH=00 (как правило, это так).
Если запустить программу в отладчике DEBUG от Microsoft, регистры BX:CX будут содержать размер программы в байтах, остальные регистры общего назначения обнулены.
При запуске демки из командной строки, задействуется COMMAND.COM, который вызывает функцию DOS 4B00h: "загрузить и выполнить программу".
Из описания функции:
COM-format executables begin running with the following register values: AL = 00h if first FCB has valid drive letter, FFh if not AH = 00h if second FCB has valid drive letter, FFh if not CS,DS,ES,SS = PSP segment SP = offset of last word available in first 64K segment

Содержимое остальных регистров не документируется и зависит от способа реализации функции в DOS.
Например, в MS-DOS 5.0: BX=AX, CX=00FFh, DX=DS=ES=PSP, BP=????, DI=SP, SI=0100h (для COM-программы)
Насчет регистра флагов: флаг направления (direct flag) при запуске всегда сброшен, это можно использовать.

Вывод следующий: регистры необходимо явно инициализировать.
inc1001
Даунгрейдер
 
Сообщения: 8
Зарегистрирован: 02 фев 2025, 21:36

Re: Демки для DOS

Сообщение StoYazykov » 08 сен 2026, 14:12

>> И еще выход при нажатии клавиши (как в примере iAPX286) был бы очень полезен.
Да, был бы полезен. Но - уже не влезет в 64 байта (сейчас почти на грани - 63 байта).

>> А откуда разрыв изогнутых волн в правой части экрана?
Сам не знаю. Влезает в 64 байта - и ладно :)

P. S. Вот ещё одна версия. Что она рисует, непонятно, но красиво. (64 байта ровно!)

Код: Выделить всё
    org    100h
    mov    ax,    0013h ; short analog of mov ax, 0013h, ah=00h
    int    10h        ; set video mode
    push    0A000h      ; set video segment (A000h)
    pop    es

    ; drawing...
    DrawY:          ; vertical
    xor    bx,    bx
    DrawX:          ; horizontal
    mov    ax,    bx
    mul    cx
    stosw          ; write pixel
    inc    bx       ; increment X counter
    cmp    bx,    320 ; check of line end
    jl    short   DrawX       ; if BX<320, continue drawing next pixel

    add    di,    140h ; next line
    inc    cl       ; short analog of inc cx
    cmp    cl,    200 ; check of screen end
    jb    short   DrawY       ; if CL<200, drawing next line

    ; animation.

    Anim:
    mov     dx,    3DAh
    Backtrace:
    in      al,    dx
    and     al,    8
    jz      short   Backtrace

    mov    dl,    0C8h  ; change color
    out    dx,    al   ; change
    inc    dx         ; dx=3C9h, change RGB (0-64)
    mov   ch,   1    ; short analog of mov cx, 01??h, in CL garbage,
               ; but whatever - CL (color index) anyway in 0-FF :)
    AnimLoop:
    mov    al,    cl
    add    ax,    bp   ; phase
    out    dx,    al   ; select R
    shr    ax,    1    ; right-shift R value
    out    dx,    al   ; select G
    shr    ax,    1    ; right-shift G value
    out    dx,    al   ; select B
    loop   short  AnimLoop
    inc    bp        ; increment phase
    jmp    short  Anim
Самое тёмное дело - это строки в C

Объектно-ориентированное программирование -- метод изготовления граблей по принципу матрешки.

http://revival.narod.ws

Изображение
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 305
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

Re: Демки для DOS

Сообщение inc1001 » 08 сен 2026, 23:59

StoYazykov писал(а):>> И еще выход при нажатии клавиши (как в примере iAPX286) был бы очень полезен.
Да, был бы полезен. Но - уже не влезет в 64 байта (сейчас почти на грани - 63 байта).

>> А откуда разрыв изогнутых волн в правой части экрана?
Сам не знаю. Влезает в 64 байта - и ладно :)

А, ну если 64 байта - фетиш, то есть вариант волн без разрыва.
Размер 56 байт, еще на 8 байт можно "гулять"!
 Развернуть: Волны
Код: Выделить всё
.286
.model tiny
.code
org 0100h
;----------------------------
    m0100:
      mov ax,0013h
      cwd ; mov dx,0000
      int 10h
      push 0A000h
      pop es
      xor di,di
    DrawY:
      xor ax,ax
      mov cx,00A0h ; 320/2
    DrawX:
      add ax,dx
      stosw
      loop DrawX
      inc dx
      cmp dl,0C8h ; 200
      jnz DrawY
    Anim:
      mov dx,03DAh
    Backtrace:
      in al,dx
      and al,08
      jz Backtrace
      mov dl,0C8h
      out dx,al
      inc dx
    AnimLoop:
; Регистр CX=0000
      mov cl,03 ; mov cx,0003
      lea ax,[bx+di]
    loopRGBSelect:
      out dx,al
      shr ax,1
      loop loopRGBSelect
      dec bl
      jnz AnimLoop
      inc di
      jmp Anim
;----------------------------
end m0100
inc1001
Даунгрейдер
 
Сообщения: 8
Зарегистрирован: 02 фев 2025, 21:36

Re: Демки для DOS

Сообщение StoYazykov » Вчера, 21:03

Демка Rolling - вертушка.
Весит 109 байт, также имеет звук.

Изображение

Код: Выделить всё
org 100h
mov ax, 0013h
int 10h
push 0A000h
pop es

mov si, 200

DrawY:
mov cx, 320

DrawX:

mov ax, cx
sub ax, 160
imul ax

xchg bp, ax
mov ax, si

sub ax, 100
imul ax

add ax, bp

div si

SelfModify:
sub ax, 0
stosb

add byte [SelfModify+2], al

loop DrawX

dec si
jnz DrawY

; animation.

Anim:

; sound

mov al, 0B6h
out 43h, al
mul di
out 42h, al
xchg al, ah
out 42h, al

or al, 3
out 61h, al

mov ch, 90h

loop $

and al, 0FCh
out 61h, al

; sound end

mov dx, 3DAh

Backtrace:
in al, dx
and al, 8
jz Backtrace

mov dl, 0C8h
out dx, al
inc dx

AnimLoop:

mov cl, 03
lea ax, [bx+di]

SelectRGB:
shl al, 1
out dx, al
loop SelectRGB

inc bl
jnz AnimLoop

inc di

in al, 60h
dec al
jnz Anim

mov ax, 3
int 10h
ret
Самое тёмное дело - это строки в C

Объектно-ориентированное программирование -- метод изготовления граблей по принципу матрешки.

http://revival.narod.ws

Изображение
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 305
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ


Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

cron