| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- .model small
- .code
- org 100h
- start: push bp ; стек
- mov bp,sp
- sub sp, 303h
- mov ah,0 ; установка реж 320х200х256
- mov al,13h
- int 10h
- xor bx,bx ; считываем палитру в [BP-4]-[BP+FCFDh]
- mov cx,0FDh
- lea dx,[bp][0FCFDh]
- mov ax,ds
- mov es,ax
- mov ax,01017h
- 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 al, [bp][0FD00h] ; сохраняем первый цвет в [BP-3]
- mov [bp-0003], al
- mov al, [bp][0FD01h] ; сохраняем первый цвет в [BP-2]
- mov [bp-0002], al
- mov al, [bp][0FD02h] ; сохраняем первый цвет в [BP-1]
- mov [bp-0001], al
- lea ax,[bp][0FD00h] ; от сих
- lea bx,[bp][0FD03h]
- mov si,bx
- mov di,ax
- mov ax,ds
- mov es,ax
- mov cx,02FAh
- repe movsb ; до сих, смещаем палитру ниже
- mov al, [bp][-0003h]
- mov [bp-0006], al ; потерянный цвет в конец палитры
- mov al, [bp][-0002h]
- mov [bp-0005], al
- mov al, [bp][-0001h]
- mov [bp-0004], al
- mov dx,03DAh ; порт состояния луча монитора
- in1: in al,dx ; от сих
- and al,008h
- jne in1
- in2: in al,dx
- and al,008h
- je in2 ; до сих - ждем обратного хода луча
- xor bx,bx ; от сих
- mov cx,0100h
- lea dx,[bp][0FCFDh]
- mov ax,ds
- mov es,ax
- mov ax,01012h
- 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
|