.model small .code org 100h start: push bp ; стек mov bp,sp sub sp, 02FDh mov ah,0 ; установка реж 320х200х256 mov al,13h int 10h mov ax,0A000h ; устанавливаем es:di на видео память mov es,ax xor ax,ax mov di,ax mov cx,0FA00h ; начинаем рисовать mov al,00h LP: mov es:[di],BYTE PTR al ; цикл прорисовки mov ax,di add ax,01h xor dx,dx ; проверяем, кратно ли di 320ти mov bx,0140h div bx mov al, BYTE PTR es:[di] add di,1h cmp dx,0h je UVEL ; если да, увеличиваем цвет LOP: loop LP ; конец цикла jmp e UVEL: add al,1h ; здесь увеличиваем цвет jmp LOP e: mov bx,1 ; считываем палитру в [BP-4]-[BP+FD00h] mov cx,0FFh lea dx,[bp][-02FDh] mov ax,ds mov es,ax mov ax,01017h int 10h mov ax,1015 mov bl,0FFh int 10h mov bp[-003h],dh mov bp[-002h],cl mov bp[-001h],ch mov dx,03DAh ; порт состояния луча монитора in1: in al,dx ; от сих and al,008h jne in1 in2: in al,dx and al,008h je in2 ; до сих - ждем обратного хода луча mov bx,2 ; от сих mov cx,0100h lea dx,[bp][-02FDh] mov ax,ds mov es,ax mov ax,01012h int 10h ; до сих - вставляем палитру mov ax,1010 mov bx,0h mov ch,bp[-003h] mov cl,bp[-002h] mov dh,bp[-001h] int 10h mov ah,01h ; проверка на нажатие кнопки int 16h ; ----- jz e ; если нету, то снова mov ah,0 mov al,3h ; обратно в текстовый режим int 10h ; ----- mov sp,bp ; вертаем стек pop bp int 20h ; типа конец :) end start