| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- .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
|